#include <iostream>
#include <bitset>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
#include <sstream>

#define REP(i,n) for(int i=0;i<(int)(n);i++)

using namespace std;

const double INF = 1e+10;

int main() {
  string str;
  while (getline(cin, str)) {
    stringstream ss;
    ss << str;
    int l;
    ss >> l;
    vector<int> r;
    while(ss){
      int ri;
      ss >> ri;
      r.push_back(ri);
    }
    r.pop_back();
    int n=r.size();
    vector<vector<double>> d(n+1,vector<double>(n+1,INF));
    REP(i,n)REP(j,n){
      double h = abs(r[i] - r[j]);
      double c = r[i] + r[j];
      double w = sqrt(c*c - h*h);
      d[i][j] = w;
    }
    REP(i,n){
      d[i][n] = d[n][i] = r[i];
    }
    vector<vector<double>> dp(1<<(n+1), vector<double>(n+1,INF));
    dp[1<<n][n] = 0.0;
    REP(i,1<<(n+1)){
      bitset<13> bs(i);
      REP(j,n+1){
        if(!bs[j]){
          auto cp = bs;
          cp[j] = true;
          REP(k,n+1)
            dp[cp.to_ulong()][j] = min(dp[cp.to_ulong()][j], dp[i][k] + d[k][j]);
        }
      }
    }
    double mind = INF;
    REP(i,n){
      mind = min(mind, dp[(1<<(n+1))-1][i] + r[i]);
    }
    if (mind <= l)
      cout << "OK" << endl;
    else
      cout << "NA" << endl;
  }
  return 0;
}