#include <iostream>
#include <cstdio>
#include <iomanip>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <bitset>
#include <stack>
#include <utility>
#include <numeric>
#include <algorithm>
#include <functional>
#include <cctype>
#include <complex>
#include <string>
#include <sstream>

using namespace std;

#define all(c) c.begin(),c.end()
#define rall(c) c.rbegin(),c.rend()
#define mp(a,b) make_pair((a),(b))
#define eq ==
#define square(X) ((X)*(X))

typedef long long ll;
typedef complex<double> point;
typedef pair<int,int> pii;

// →↑←↓
const int dx[] = {1,0,-1,0};
const int dy[] = {0,-1,0,1};


const double EPS = 1e-9;

const int MAX_N = 12;
double DP[1 << MAX_N][MAX_N];
int CAKE[MAX_N];
int N,L;


double rec(int se,int now){
    if(now != -1 and DP[se][now] >= 0) return DP[se][now];
    if(se == ((1 << N)-1)){
        return CAKE[now];
    }
    double ret = 10000000;
    for(int i=0;i<N;i++){
        if(!((se >> i) & 1)){
            // no one.
            if(now == -1){
                ret = min(ret,rec(se | (1 << i),i)+CAKE[i]);
            }else{
                ret = min(ret,rec(se | (1 << i),i)+
          sqrt(square(CAKE[i]+CAKE[now])-square(CAKE[i]-CAKE[now])));
            }
        }
    }
    if(now != -1){
        return (DP[se][now]=ret);
    }else{
        return ret;
    }
}

int main(){
    string s;
    while(getline(cin,s)){
        for(int i=0;i<(1<<MAX_N);i++){
            for(int j=0;j<MAX_N;j++){
                DP[i][j] = -1;
            }
        }
        stringstream ss;
        ss << s;
        ss >> L;
        N = 0;
        for(int i=0;!ss.eof();i++){
            ss >> CAKE[i];
            N++;
        }
        if(rec(0,-1) <= L){
            cout << "OK" << endl;
        }else{
            cout << "NA" << endl;
        }

    }
    return 0;
}