#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> parse(string str) {
	vector<int> ret; int t = 0; str += ' ';
	for (int i = 0; i < str.size(); i++) {
		if (str[i] == ' ') ret.push_back(t), t = 0;
		else t = t * 10 + str[i] - 48;
	}
	return ret;
}
int bitcount(int x) {
	int ret = 0;
	for (int i = 0; i < 31; i++) {
		if (x & (1 << i)) ret++;
	}
	return ret;
}
string s; double dp[4100][12];
int main() {
	while (s = "", getline(cin, s)) {
		vector<int> u = parse(s);
		vector<int> v(u.begin() + 1, u.end());
		int n = v.size();
		for (int i = 0; i < (1 << n); i++) {
			for (int j = 0; j < n; j++) dp[i][j] = 999999999.9;
		}
		for (int i = 0; i < n; i++) dp[1 << i][i] = v[i];
		for (int i = 1; i < (1 << n); i++) {
			if (bitcount(i) <= 1) continue;
			for (int j = 0; j < n; j++) {
				if (!(i & (1 << j))) continue;
				dp[i][j] = 999999999.9;
				for (int k = 0; k < n; k++) {
					if ((i & (1 << k)) && (j != k)) {
						double d1 = v[j] + v[k], d2 = abs(v[j] - v[k]);
						dp[i][j] = min(dp[i][j], dp[i - (1 << j)][k] + sqrt(d1 * d1 - d2 * d2));
					}
				}
			}
		}
		double ret = 999999999.9;
		for (int i = 0; i < n; i++) ret = min(ret, dp[(1 << n) - 1][i] + v[i]);
		cout << (ret <= u[0] + 1e-10 ? "OK" : "NA") << endl;
	}
}