#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<string>
#include<bitset>
using namespace std;
int r[15];
int L;
int N;
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;
}
bool solve(int no,double x,int zen){
  //   printf("%d %lf %d\n",no,x,zen);
  if(x>(double)L) return false;
  if(no==bita){
    return true;
  }
  for(int i=0;i<N;i++){
    if(no & (1<<i) != 0) continue;
    if(zen==-1){
      if(solve((no | (1<<i)),(double)(r[i]*2),i)) return true;
      continue;
    }
    double ad;
    ad = GetLarge(r[zen],r[i]);
    if(solve(no | (1<<i),x+ad,i))
      return true;    
  }
  return false;
}
main(){
  char buf[256];
  int co;
  while(fgets(buf,sizeof(buf),stdin)!=NULL){
    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);
    if(solve(0,0,-1))
      printf("OK\n");
    else
      printf("NA\n");
    ny.clear();
  }
}