#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <utility>
#include <cctype>
using namespace std;

#define rep(i,n) for(int (i)=0; (i)<(int)(n); ++(i))
#define foreach(c,i) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();i++)
typedef pair<int,int> P;

string in;
int L, temp, N;

int main() {
  while (getline(cin, in)) {
    istringstream is(in);
    is >> L;
    vector<int> cakes;
    vector<int> temps;
    while (is >> temp) {
      temps.push_back(temp);
    }
    N = temps.size();
    sort(temps.begin(), temps.end());

    for( int i = 0; i < N / 2; ++i) {
      cakes.push_back(temps[i]);
      cakes.push_back(temps[N-1-i]);
    }
    if (N % 2) {
      int e = temps[(N-1)/2];
      if (abs(e - cakes.front()) < abs(e - cakes.back())) cakes.push_back(e);
      else {
        cakes.push_back(0);
        for (int i = cakes.size()-2; i >= 0; --i) cakes[i+1] = cakes[i];
        cakes[0] = e;
      }
    }
    // rep(i,cakes.size()) printf("%4d", cakes[i]); puts("");
    
    double current_length = cakes.front();
    for (int i = 0; i < cakes.size() - 1; ++i) {
      current_length += 2 * sqrt(cakes[i] * cakes[i+1]);
    }
    current_length += cakes.back();
    // printf("%lf\n", current_length);
    
    printf("%s\n", (L + 10e-10 > current_length) ? "OK": "NA");
  }
  return 0;
}