#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstdio>
#include <sstream>
#include <vector>
using namespace std;
int W,R[12],n;
int bit[12]={1,2,4,8,16,32,64,128,256,512,1024,2048};


double cal_r(int a,int b){
	return sqrt((double)(a+b)*(a+b)-(a-b)*(a-b));
}


int main(){
	string s;
	while(getline(cin,s)){
		
		vector <int>v;
		stringstream am;
		am<<s;
		n=0;
		am>>W;
		while(!am.eof()){
			int y;
			am>>y;
			v.push_back(y);
			n++;
		}
		//n=v.size();
		for(int i=0;i<v.size();i++)R[i]=v[i];
		
		
		double dp[4096][12];
		bool flag[4096][12]={0};
		for(int i=0;i<4096;i++){
			for(int j=0;j<12;j++){
				dp[i][j]=200.0;
			}
		}
		queue <int>first;
		queue <int>second;
		first.push(0);
		second.push(-1);
		double ans=200.0;
		for(int P,L;!first.empty();first.pop(),second.pop()){
			P=first.front();
			L=second.front();
			if(L<0){
				for(int i=0;i<n;i++){
					dp[bit[i]][i]=R[i];
					if(!flag[bit[i]][i]){
						first.push(bit[i]);
						second.push(i);
						flag[bit[i]][i]=1;
					}
				}
			}
			else{
				
				//for(int i=0;i<3;i++)cout<<((P&bit[i])?"1":"0");
				//cout<<" "<<L<<" "<<dp[P][L]<<endl;
				
				int f=1;
				for(int i=0;i<n;i++){
					if((~P)&bit[i]){
						f=0;
						int tmp=P|bit[i];
						if(!flag[tmp][i]){
							flag[tmp][i]=1;
							first.push(tmp);
							second.push(i);
						}
						dp[tmp][i]=min(dp[tmp][i],dp[P][L]+cal_r(R[L],R[i]));
					}
				}
				
				if(f){
					ans=min(ans,dp[P][L]+R[L]);
				}
			}
			
		}
		//cout<<ans<<endl;
		if(ans<=W)cout<<"OK\n";
		else cout<<"NA\n";
	}
	
	
	return 0;
}
