#include <iostream>
#include <cstdio>
#include <vector>
#include <list>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <numeric>
#include <sstream>
#include <queue>
#include <iomanip>
using namespace std;

#define REP(i,n) for(int (i)=0; (i)<(n); (i)++)
#define FOR(i,a,b) for(int (i)=(a); (i)<(b); (i)++)
#define PUSH(n,v) for(int i=0; i<(n); i++) {int j; cin >> j; v.push_back(j);}
#define ALL(v) v.begin(), v.end()
#define print(s) cout << (s) << endl

double getMide(int a, int b) {
    return sqrt(pow(a+b,2) -  pow(a-b,2));
}

void solve120(string s) {
    int W;
    vector<int> r;
    stringstream ss;
    ss << s;
    ss >> W;
    int rr;
    while (ss >> rr) r.push_back(rr);
    sort(ALL(r));
    if (r.size() == 0) {
        cout << "OK" << endl;
        return;
    }else if (r.size() == 1) {
        if (r[0] * 2 <= W) cout << "OK" << endl;
        else cout << "NA" << endl;
        return;
    }else if (r.size() == 2) {
        if (r[0] + r[1] + getMide(r[0], r[1]) <= W) cout << "OK" << endl;
        else cout << "NA" << endl;
        return;
    }
    
    int r0 = r[0], r1 = r[1];
    double len = 10000;
    r.erase(r.begin());
    r.erase(r.begin());
    
    do {
        double l = r0 + r1;
        REP(i,r.size()) {
            if (i == 0) l += getMide(r0, r[i]);
            else {
                l += getMide(r[i-1], r[i]);
            }
        }
        l += getMide(r.back(), r1);
        len = min(len, l);
    }while (next_permutation(ALL(r)));
    
    if (len <= W) cout << "OK" << endl;
    else cout << "NA" << endl;
}

int main() {
    string s;
    while (getline(cin,s)) {
        solve120(s);
    }
    return 0;
}