#include<iostream>
#include<sstream>
#include<cmath>
#include<algorithm>
using namespace std;
#define REP(i,b,n) for(int i=b;i<n;i++)
#define rep(i,n)   REP(i,0,n)
double rdata[12][12];
double table[1<<12][12];
const double eps = 1e-10;

void pre_calc(int n,double *r){
  rep(i,n){
    rep(j,n){
      double A=r[i]+r[j],B=r[i]-r[j];
      rdata[i][j]=sqrt(A*A-B*B);
    }
    rdata[i][i]=0;
  }
}


double solve(int now,int n,int state,double *r,
	     int last){
  if ( table[state][last] >-eps)return table[state][last];
    
  if ( now == n){
    return table[state][last]=r[last];
  }


  double ret=1000000000;
  rep(i,n){
    if ( ((1<<i)&state)!= 0)continue;
    ret=min(ret,rdata[last][i]+solve(now+1,n,(state|(1<<i)),r,i));
  }
  
  return table[state][last]=ret;
}

main(){
  double in;
  while(cin>>in ){
    string t;getline(cin,t);stringstream sin(t);
    int n=0;
    double r[12];
    while(sin>>r[n])n++;
    bool used[12]={false};
    sort(r,r+n);
    pre_calc(n,r);
    rep(i,(1<<n)){
      rep(j,n)table[i][j]=-1;
    }

    double ret=in+1;
    rep(i,n){
      ret=min(ret,r[i]+solve(1,n,(1<<i),r,i));
    }
    
    if (ret<in+eps)puts("OK");
    else puts("NA");
    
  }
  return false;
}