#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;

#define BUFSIZE 65536

char buf[BUFSIZE];

inline double base(double r, double x) {
    return sqrt(r*r - x*x);
}

inline double calc(double r1, double r2) {
    return base(r1+r2, r1-r2);
}

bool judge(int w, vector<int>& rs) {
    const int size = rs.size();
    for(int left=0; left<size; left++) {
        for(int right=left+1; right<size; right++) {
            vector<int> list;
            for(int i=0; i<size; i++) if(i!=left && i!=right) list.push_back(i);
            do {
                double req = rs[right] + rs[left] + calc(rs[left], rs[list[0]]) + calc(rs[list[size-3]], rs[right]);
                for(int i=1; i<size - 2; i++) {
                    req += calc(rs[list[i-1]], rs[list[i]]);
                }
                if(req <= w) return true;
            } while(next_permutation(list.begin(), list.end()));
        }
    }
    return false;
}

int main(){
  
  while(cin.getline(buf, BUFSIZE)) {
      istringstream iss(buf);
      int w;
      iss >> w;
      vector<int> rs;
      int r;
      while(iss >> r) rs.push_back(r);
      cout << (judge(w, rs) ? "OK" : "NA") << endl;
  }
}

