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

const double INF = 1e+9;
const double EPS = 1e-9;

//string型からint型に変換する
int s_to_i(string s){
    bool flag = false;
    int n = 0;
    for(unsigned int i=0 ; i < s.size() ; ++i ){
        if( i == 0 && s[i] == '-' ){
            flag = true;
        }else if( s[i] >= '0' && s[i] <= '9' ){
            n *= 10;
            n += s[i] - '0';
        }else{
            break;
        }
    }
    return (flag)? -n : n ;
}

// 文字列を半角スペース区切りで単語に分割する
// s = "This is a pen."
// vector<string> v = split_words(s); // v = {"This", "is", "a", "pen."}
vector<string> split_words(string s){
    bool flag = false;
    vector<string> vs;
    string str;
    s.push_back(' ');
    for(int i=0 ; i < s.size() ; i++ ){
        char c = s[i];
        if( flag == false ){
            if( c != ' ' ){
                flag = true;
                str.clear();
                str.push_back( c );
            }
        }else{
            if( c != ' ' ){
                str.push_back( c );
            }
            if( c == ' ' ){
                flag = false;
                vs.push_back( str );
                str.clear();
            }
        }
    }
    return vs;
}

vector<int> to_vint(vector<string> vs){
	vector<int> vi;
	for(int i=0 ; i < vs.size() ; i++ ){
		vi.push_back( s_to_i( vs[i] ) );
	}
	return vi;
}

int main(){
	string s;
	while( getline(cin,s) ){
		vector<string> vs = split_words(s);
		vector<int> v = to_vint( vs );
		int width = v[0];
		int N = v.size() - 1;
		vector<int> v_;
		for(int i=1 ; i < v.size() ; i++ ){
			v_.push_back( v[i] );
		}
		v = v_;
		
		// dp[S][i] := 右端のロールケーキは i， 集合Sのロールケーキを並べた.
		double dp[1<<12][12];
		// 初期化
		for(int i=0 ; i < (1<<N) ; i++ ){
			fill( dp[i] , dp[i]+N , INF );
		}
		for(int i=0 ; i < N ; i++ ){
			dp[1<<i][i] = 2.0 * v[i];
		}
		for(int s=1 ; s < (1<<N) ; s++ ){
			for(int j=0 ; j < N ; j++ ){
				if( (s >> j & 1) == 0 ) continue;
				
				for(int i=0 ; i < N ; i++ ){
					if( (s >> i & 1) == 0 ){
						double d = 2.0 * sqrt(v[j] * v[i]) - v[j] + v[i];
						dp[s|1<<i][i] = min( dp[s|1<<i][i], dp[s][j] + d );
					}
				}
			}
		}
		double ans = INF;
		for(int i=0 ; i < N ; i++ ){
			ans = min( ans , dp[(1<<N)-1][i] );
		}
		cout << ((ans < width + EPS)? "OK" : "NA" ) << endl;
	}
}