#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cstring>

using namespace std;

const int MAX_N = 12 + 1;
const double INF = 1e12;
int n, W;
double dp[1 << MAX_N][MAX_N];  // DPテーブル
double d[MAX_N][MAX_N];

vector<int> ToRadius(const string &s)
{
    vector<int> res;

    for (int i = 0; i < s.size(); i++) {
        if (isdigit(s[i])) {
            int r = s[i] - '0';

            while (isdigit(s[i + 1])) {
                r *= 10;
                r += s[++i] - '0';
            }
            res.push_back(r);
        }
    }
    return res;
}

void solve()
{
    for (int S = 0; S < 1 << n; ++S)
        fill(dp[S], dp[S] + n, INF);
    dp[(1 << n) - 1][0] = 0;

    for (int S = (1 << n) - 2; S >= 0; --S) 
        for (int v = 0; v < n; ++v) 
            for (int u = 0; u < n; ++u)
                if (!(S >> u & 1))
                    dp[S][v] = min(dp[S][v], dp[S | 1 << u][u] + d[v][u]);

    if (W - dp[0][0] >= 0.0)
        cout << "OK\n";
    else
        cout << "NA\n";
}

int main()
{
    string s;

    while (getline(cin, s)) {
        vector<int> c = ToRadius(s + " ");

        W = c[0];
        n = c.size();
        c[0] = 0;

        for (int i = 0; i < n; i++)
            d[0][i] = d[i][0] = (double)c[i];

        for (int i = 1; i < n; i++) 
            for (int j = 1; j < n; j++) 
                d[i][j] = d[j][i] = 2 * sqrt((double)c[i] * c[j]);

        solve();
    }

    return 0;
}