#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cmath>
#include <queue>
#include <map>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()
const int INF = 1<<30;
const int EPS = 1e-8;

typedef pair<int, int> pii;

map<pii, double> mp;

double calc(int r1, int r2) {
  if (mp[pii(r1,r2)]) return mp[pii(r1,r2)];
  return mp[pii(r1,r2)] = sqrt((r1+r2)*(r1+r2) - (r1-r2)*(r1-r2));
}

int main() {
  string s;
  while(getline(cin, s)) {
    stringstream ss(s);
    double x;
    ss >> x;
    int r;
    vector<int> v;
    while(ss >> r) {
      v.push_back(r);
    }
    sort(ALL(v));
    int n = v.size();
    bool f = false;
    // map<vector<int>, bool> mp2;
    // do {
    //   if (mp2[v]) continue;
    //   double xx = v[0] + v[v.size()-1];
    //   REP(i, v.size() - 1) {
    //     xx += calc(v[i], v[i+1]);
    //   }
    //   FOR(it,v)
    //     cout << *it << " ";
    //   cout << endl;
    //   cout << xx << endl;
    //   if (xx <= x + EPS) {
    //     f = true;
    //     break;
    //   }
    //   mp2[v] = true;
    // } while(next_permutation(ALL(v)));
    vector<int> vv[2];
    for (int i=0, j=n-1; i<=j; i++,j--) {
      if (i==j) {
        vv[0].push_back(v[i]);
        vv[1].push_back(v[i]);
        break;
      }
      vv[0].push_back(v[i]);
      vv[0].push_back(v[j]);
      vv[1].push_back(v[j]);
      vv[1].push_back(v[i]);
    }
    REP(k,2) {
      double xx = vv[k][0] + vv[k][n-1];
      // FOR(it,vv[k])
      //   cout << *it << " ";
      // cout << endl;
      REP(i, n-1){
        xx += calc(vv[k][i], vv[k][i+1]);
      }
      // cout << xx << endl;
      if (xx <= x+EPS) {
        f = true;
        break;
      }
    }
    if (f)
      cout << "OK";
    else
      cout << "NA";
    cout << endl;
  }
}