#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <map>
#include <cmath>
#include <sstream>
#include <queue>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iterator>
#include <stack>
#include <list>
using namespace std;
typedef long long int lli;
typedef pair<int,int> P;
#define F first
#define S second
const int INF=1000000000;

int main(){
	string str;
	while(getline(cin,str)){
		stringstream s;
		s << str;
		int l;
		s >> l;
		vector<int> r;
		while(!s.eof()){
			int tmp;
			s >> tmp;
			r.push_back(tmp);
		}	
		double dp[1<<12][12];
		double d[12][12];
		int n=(int)r.size();
		for(int i=0; i<n; ++i){
			for(int j=0; j<n; ++j){
				d[i][j]=2*sqrt(r[i]*r[j]);
			}
		}
		for(int S=0; S<(1<<n); ++S){
			fill(dp[S],dp[S]+n,INF);
		}
		for(int i=0; i<n; ++i){
			dp[(1<<n)-1-(1<<i)][i]=r[i];
		}
		for(int S=(1<<n)-2; S>=0; --S){
			for(int j=0; j<n; ++j){
				if(!(S&(1<<j))){
					for(int k=0; k<n; ++k){
						if(S==0) dp[S][j]=min(dp[S][j],dp[S|1<<j][k]+d[j][k]+r[j]);
						else dp[S][j]=min(dp[S][j],dp[S|1<<j][k]+d[j][k]);
					}
				}
			}
		}
		double res=INF;
		for(int i=0; i<n; ++i){
			res=min(res,dp[0][i]);
			//cout << dp[0][i] << "\n";
		}
		if(res<=l) cout << "OK\n";
		else cout << "NA\n";
		//cout << res << "\n";
	}
	return 0;
}