#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<string>
#include<bitset>
using namespace std;
#define INF (1<<20)
int r[15];
int L;
int N;
double dp[(1<<14)][14];
vector<string> ny;
int bita;
double GetLarge(int r1,int r2){
  return sqrt((r1+r2)*(r1+r2)-abs(r1-r2)*abs(r1-r2))-r1+r2;
}
double solve(int no,int zen){
  double ret=INF;
  //  printf("%d\n",no);
  //  printf("%lf %d %d\n",dp[no][zen],no,zen);
  if(dp[no][zen]>0) return dp[no][zen];
  if(no==bita){
    return dp[no][zen]=(double)(r[zen]*2);
  }
  for(int i=0;i<N;i++){
    if( (no & (1<<i)) != 0) continue;
    double ad;
    ad = GetLarge(r[i],r[zen]);
    ret=min(ret,solve( (no|(1<<i)), i )+ad);
  }
  return dp[no][zen]=ret;
}
main(){
  char buf[256];
  int co;
  while(fgets(buf,sizeof(buf),stdin)!=NULL){
    for(int i=0;i<(1<<13);i++){
      for(int j=0;j<13;j++){
	dp[i][j]=-1.0f;
      }
    }
    string str=buf;
    co=0;
    for(int i=0;i<(int)str.size();i++){
      if(str[i]==' '){
	ny.push_back(str.substr(co,i-co+1));
	co=i+1;
      }
    }
    ny.push_back(str.substr(co,(int)str.size()-co));
    sscanf(ny[0].c_str(),"%d",&L);
    N=0;
    for(int i=0;i<(int)ny.size()-1;i++){
      N++;
      sscanf(ny[i+1].c_str(),"%d",&r[i]);
    }
    bita = (1<<N)-1;
    //  printf("%d %d\n",N,bita);
    double ret = INF;
    for(int i=0;i<N;i++){
      ret=min(ret,solve((1<<i),i));
      //  printf("%lf\n",ret);
    }
    if(ret <= (double)L)
      printf("OK\n");
    else
      printf("NA\n");
    ny.clear();
  }
}