#include<iostream>
#include<iomanip>
#include<algorithm>
#include<bitset>
#include<cassert>
#include<cctype>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<functional>
#include<limits>
#include<list>
#include<map>
#include<numeric>
#include<set>
#include<stack>
#include<string>
#include<sstream>
#include<queue>
#include<vector>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;

#define MOD 1000000007
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3fLL

int main() {
	for (int w; cin >> w;) {
		string s; getline(cin, s);
		vector<int> c;
		stringstream ss(s);
		while (!ss.eof()) {
			int r; ss >> r;
			c.push_back(r);
		}
		int bend = 1 << c.size();
		vector<vector<double> > dp(bend, vector<double>(c.size(), INF));
		for (int i = 0; i < c.size(); i++) {
			dp[0][i] = c[i];
		}
		for (int bit = 0; bit < bend; bit++) {//1??±?????\??????
			for (int i = 0; i < c.size(); i++) {
				if ((bit & (1 << i)) == 0) {//??±?????\??£??????????????£??????
					for (int j = 0; j < c.size(); j++) {
						//cout << bitset<10>(bit) << endl;
						//cout << bitset<10>(1 << i) << endl;
						//cout << bitset<10>(1 << j) << endl;
						//cout << endl;
						if ((bit&(1 << j)) != 0) {//??±?????\??£????????????
							dp[bit][i] = min(
								dp[bit][i],
								dp[bit - (1 << j)][j]
								+ sqrt(
								(c[j] + c[i])*(c[j] + c[i]) - (c[j] - c[i])*(c[j] - c[i])
								)
							);
						}
						//cout << dp[bit][i] << endl;
					}
				}
			}
		}
		double m = INF;
		for (int i = 0; i < c.size(); i++) {
			//cout << dp[bend - 1 - (1 << i)][i] + c[i] << endl;
			m = min(m, dp[(bend - 1) - (1 << i)][i] + c[i]);
		}
		cout << (m <= w ? "OK" : "NA") << endl;
	}
	return 0;
}