#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <complex>
#include <stack>
#include <queue>
#include <cstring>
#include <sstream>
#include <cassert>
#include <list>
#include <ctime>
#include <numeric>
#include <fstream>
#include <valarray>
using namespace std;
static const double EPS = 1e-6;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PI;
#define rep(i,n) for(int i=0;i<(int)(n);++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()
#define mp(a,b) make_pair(a,b)
#define pb(a) push_back(a)
#define SZ(a) (int(a.size()))
#define F first
#define S second
const long double pi=acos(-1.0);
int dx[]={0,1,0,-1,1,1,-1,-1,0},dy[]={1,0,-1,0,1,-1,1,-1,0};

string str;
vector<int> in;
double dp[1<<12][12];
bool vis[1<<12][12];

double rec(int st,int la){
  if(st==(1<<la))return in[la];
  if(vis[st][la])return dp[st][la];
  vis[st][la]=true;
  double& ret=dp[st][la]=1<<30;

  rep(i,SZ(in)){
    if((st&(1<<i))==0 || i==la)continue;
    double mi=rec(st^(1<<la),i);
    int l=in[la]+in[i],r=in[i]-in[la];
    double dist=sqrt(l*l+r*r);
    ret=min(ret,mi+dist-in[i]+in[la]);
  }
  return ret;
}

void solve(){
  stringstream ss(str);
  in.clear();
  int len;
  ss>>len;
  int t;
  while(ss>>t)in.pb(t);
  memset(vis,0,sizeof(vis));
  rep(i,SZ(in))
    if(len+EPS>rec((1<<SZ(in))-1,i)){
      cout<<"OK"<<endl;
      return;
    }
  
  cout<<"NA"<<endl;
}


main(){
  while(getline(cin,str))
    solve();
}