#include<bits/stdc++.h>
using namespace std;

#define add(i,j) (sqrt(cakes[i]*cakes[j]) * 2 - cakes[i] + cakes[j])
vector< string > split( const string& str, string del){
  char *p,  *str_buff = new char[str.size() + 1], first = 0;
  vector< string > ret;
  strcpy( str_buff, str.c_str());
  while(p = strtok((first++ ? NULL : str_buff), del.c_str())){
    ret.push_back(p);
  }
  delete str_buff;
  return ret;
}
int main(){
  string strb;
  while(getline(cin, strb)){
    vector< string > strs = split( strb, " ");
    int box = atoi(strs[0].c_str());
    vector< int > cakes(strs.size() - 1);
    for(int i = 0; i < strs.size() - 1; i++){
      cakes[i] = atoi(strs[i + 1].c_str());
    }

    const int INF = 1 << 30;
    double dp[12][1 << 12];
    fill_n( *dp, 12 * (1 << 12), INF);

    for(int i = 0; i < cakes.size(); i++){
      dp[i][1 << i] = cakes[i] * 2;
    }

    for(int j = 0; j < 1 << cakes.size(); j++){
      for(int i = 0; i < cakes.size(); i++){
        if(dp[i][j] == INF) continue;
        for(int k = 0; k < cakes.size(); k++){
          if(j >> k & 1) continue;
          dp[k][j|(1 << k)] = min( dp[k][j|(1 << k)], dp[i][j] + add(i,k));
        }
      }
    }
    bool judge = false;
    for(int i = 0; i < cakes.size(); i++){
      judge |= dp[i][(1 << cakes.size()) - 1] <= box;
    }
    if(judge) cout << "OK" << endl;
    else cout << "NA" << endl;
  }
  return 0;
}