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

using namespace std;

#define DEBUG(x) cerr << #x << " = " << x << endl

const double INF = 1e9;
const double EPS = 1e-8;
inline double SQ(double x) { return x * x; }
inline bool EQ(double x, double y) {
    return abs(x - y) < EPS;
}

string to_bit(int n) {
    string s;
    for(int i = 11; i >= 0; i--) {
        if(n & (1 << i)) s.push_back('1');
        else s.push_back('0');
    }
    return s;
}

vector<double> vec;
inline double D(int f, int t) {
    double l = vec[f];
    double r = vec[t];
    return sqrt(SQ(l + r) - SQ(l - r));
}

int N;
map<pair<int, int>, double> memo;

double tsp(int v, int b) {
    if(memo.count(make_pair(v, b))) return memo[make_pair(v, b)];
    if(b == (1 << N) - 1) return memo[make_pair(v, b)] = vec[v];

    double s = 0;
    if(b == 0) s += vec[v];

    double res = INF;
    for(int i = 0; i < N; i++) {
        if(b & (1 << i)) continue;

        if(v == i) res = min(res, s + tsp(i, b | (1 << i)));
        else res = min(res, s + D(v, i) + tsp(i, b | (1 << i)));
    }

    return memo[make_pair(v,b)] = res;
}

int main() {
    for(string line; getline(cin, line); ) {
        istringstream iss(line);
        double len; iss >> len;
        vec.clear();
        for(double r; iss >> r; ) {
            vec.push_back(r);
        }
        N = vec.size();
        memo.clear();
        double res = INF;
        for(int i = 0; i < N; i++) {
            res = min(res, tsp(i, 0));
        }
        // DEBUG(res);
        cout << (res < len + EPS ? "OK" : "NA") << endl;
    }
}