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

double data[11][11];
double dp[1<<12][12];
int INF = 1 << 15;

int main(){
	for(int i=3;i<=10;i++){
		for(int j=3;j<=10;j++){
			data[i][j] = sqrt((double)((j+i)*(j+i)-(j-i)*(j-i)));
		}
	}
	int len;
	while( cin >> len ){
		string s;
		getline( cin, s );

		vector<int> cur;
		stringstream ss( s );
		while( !ss.eof() ){
			int r;
			ss >> r;
			cur.push_back( r );
		}
		int n = cur.size();

		for(int i=0;i<(1<<12);i++){
			fill(dp[i],dp[i]+12,INF);
		}
		for(int i=0;i<cur.size();i++){
			dp[1<<(i)][i]=cur[i];
		}

		for(int i=0;i<(1<<n);i++){
			for(int j=0;j<n;j++){
				if(dp[i][j] != INF){
					for(int k=0;k<n;k++){
						if(k==j){
							continue;
						}
						if(!(i&(1<<k))){
							if((i|(1<<k)) == ((1<<n)-1)){
								dp[i|(1<<k)][k] = min( dp[i|(1<<k)][k] , dp[i][j]+data[cur[k]][cur[j]]+cur[k]);
							}else{
								dp[i|(1<<k)][k] = min( dp[i|(1<<k)][k] , dp[i][j]+data[cur[k]][cur[j]]);
							}
						}
					}
				}
			}
		}
		bool flag = false;
		for(int i=0;i<n;i++){
			if(dp[(1<<n)-1][i] <= len){
				flag = true;
			}
		}
		if(flag){
			cout << "OK" << endl;
		}else{
			cout << "NA" << endl;
		}
	}
}