#include <vector>
#include <list>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <climits>
#include <cmath>
#include <string>
#include <cstring>
#include <complex>

#define FOR(i,b,n) for(int i=b;i<n;i++)
#define RFOR(i,b,n) for(int i=n-1;i>=b;i--)
#define CLR(mat) memset(mat, 0, sizeof(mat))
#define NCLR(mat) memset(mat, -1, sizeof(mat))
#define FILL(mat, x) memset(mat, x, sizeof(mat))
#define BIT(n, b) ((n>>b) & 1)

#define INF 1e+20

using namespace std;

typedef pair<int,int> paii;
typedef long long ll;

int n = 0;
double boxsz, rc[16], dp[1<<16][16];

double rad2(double r1, double r2){
	return sqrt(pow(r1+r2,2) - pow(r1-r2,2));
}

double rec(int stat, int v){
	
	if( dp[stat][v] != -1 )
		return dp[stat][v];
	
	if( stat == (1<<n)-1 )
		return dp[stat][v] = rc[v];
		
	double res = INF;
	
	for(int i = 0; i < n; ++i){
		if( !BIT(stat, i) ){
			if(stat==0)
				res = min(res, rec(stat|(1<<i), i) + rc[i]);
			else 
				res = min(res, rec(stat|(1<<i), i) + rad2(rc[v], rc[i])); 
		}
	}
	
	return dp[stat][v] = res;
}

string solve(){

	for(int i = 0; i < (1<<16); ++i){
		for(int j = 0; j < n; ++j){
			dp[i][j] = -1;
		}
	}
	
	return (rec(0, 0)<=boxsz?"OK":"NA");
}

int main(){

	string str;
	
	while(getline(cin, str)){
		
		stringstream ss(str);
		ss >> boxsz;
		
		n = 0;
		while(ss >> rc[n]){
			n++;
		}
		
		cout << solve() << endl;
	}
	
	return 0;
}