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

double sq(double x) {
    return x * x;
}

double getWidth(vector<int> &v1, vector<int> &v2) {
    vector<int> v;
    int n = v1.size();
    for (int i=0; i<n; ++i) {
        v.push_back(v1[i]);
        if (i < (int)v2.size()) {
            v.push_back(v2[i]);
        }
    }
    int m = v.size();
    double sum = v[0] + v[m-1];
    for (int i=1; i<m; ++i) {
        sum += sqrt(sq(v[i] + v[i-1]) - sq(abs(v[i] - v[i-1])));
    }
    return sum;
}

bool solve(vector<int> v1, vector<int> v2, double len) {
    do {
        sort(v2.begin(), v2.end());
        do {
            if (v1.size() < v2.size()) {
                swap(v1, v2);
            }
            if (getWidth(v1, v2) < len + 1e-6) {
                return true;
            }
        } while (next_permutation(v2.begin(), v2.end()));
    } while (next_permutation(v1.begin(), v1.end()));
    return false;
}

int main() {
    string input;
    int len, r;
    while (getline(cin, input)) {
        stringstream ss(input);
        ss >> len;
        vector<int> cake;
        while (ss >> r) {
            cake.push_back(r);
        }
        sort(cake.begin(), cake.end());
        int siz = cake.size();
        int n = siz / 2 + (siz % 2);
        int m = siz / 2;
        bool ok = solve(vector<int>(cake.begin(), cake.begin() + n),
                        vector<int>(cake.end() - m, cake.end()),
                        len);
        if ( ! ok) {
            ok |= solve(vector<int>(cake.end() - n, cake.end()),
                        vector<int>(cake.begin(), cake.begin() + m),
                        len);
        }
        cout << (ok ? "OK" : "NA") << endl;
    }
    return 0;
}