#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) (((1<<b) & n)!=0)

#define INF 1<<16

using namespace std;

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

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

double addrad(double r1, double r2){
	return sqrt((r1+r2)*(r1+r2)-(r1-r2)*(r1-r2));
}

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

string solve(){

	double res = INF;

	for(int i = 0; i < n; ++i){
		NCLR(dp);
		res = min(res, rec(1<<i, i) + rc[i]);
	}
	
	return res <= boxsz ? "OK" : "NA";
}


int main(){

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