#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<climits>
#include<stack>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<string>
#include<cstring>
#include<sstream>
using namespace std;
 
const int LOOP_TIMES = 1e5;
const double EPS = 1e-6;
int L, N;
 
double Evaluate(int *r){
    double val = r[0] + r[N-1];
    for(int i = 0; i < N - 1; i++){
        int a = abs( r[i] - r[i+1] ), c = r[i] + r[i+1];
        val += sqrt(c*c - a*a);
    }
    return val;
}
 
bool IsChange(int cnt){
    return cnt < rand()%LOOP_TIMES + 1;
}
 
double Solve(int *r){
    double score = Evaluate(r), mi = score;
    for(int cnt = 0; cnt < LOOP_TIMES; cnt++){
        int *a = r + rand()%N, *b = r + rand()%N;
        swap(*a, *b);
 
        double next_score = Evaluate(r);
        if( score >= next_score && !IsChange(cnt) ) swap(*a, *b);
        else score = next_score;
         
        mi = min(mi, score);
    }
    return mi;
}
 
int main(){
    while(cin >> L){
        N = 0;
        int r[12];
        string S;
        getline(cin, S);
        stringstream SS(S);
        while( !SS.eof() ){
            SS >> r[N++];
        }
 
        double ans;
        if(N == 1) ans = r[0]*2;
        else ans = Solve(r);
 
        if(L - ans + EPS > 0) puts("OK");
        else puts("NA");
    }
    return 0;
}