#include "bits/stdc++.h"
#include<unordered_map>
#include<unordered_set>
#pragma warning(disable:4996)
using namespace std;
using ld = long double;
const ld eps = 1e-9;

//// < "d:\d_download\visual studio 2015\projects\programing_contest_c++\debug\a.txt" > "d:\d_download\visual studio 2015\projects\programing_contest_c++\debug\b.txt"

vector<ld>rs;
ld memo[13][1 << 12];
ld getans(const int from, bitset<12>&bs) {
	if (memo[from][bs.to_ulong()] < -1) {
		if (bs.count() == 0)return 0;
		ld ans = 1e18;
		for (int i = 0; i < rs.size(); ++i) {
			if (bs[i]) {
				ld plus;
				ld a = rs[i];
				if (from == 12) {
					plus = 2 * a;
				}
				else {
					ld b = rs[from];
					plus=sqrt((a + b)*(a + b) - (a - b)*(a - b))-b+a;
				} 
				bs[i] = false;
				ans = min(ans,plus+ getans(i, bs));
				bs[i] = true;
			}
		}
		memo[from][bs.to_ulong()] = ans;
	}
	return memo[from][bs.to_ulong()];
}
vector<string> split(const string &str, char delim) {
	vector<string> res;
	size_t current = 0, found;
	while ((found = str.find_first_of(delim, current)) != string::npos) {
		res.push_back(string(str, current, found - current));
		current = found + 1;
	}
	res.push_back(string(str, current, str.size() - current));
	return res;
}
int main() {
	string st;
	while (getline(cin,st)) {
		vector<string>sts = split(st, ' ');
		int W = stoi(sts[0]);
		rs.clear();
		for (int i = 1; i < sts.size(); ++i) {
			rs.push_back(stold(sts[i]));
		}
		for (int i = 0; i < 13; ++i) {
			for (int j = 0; j < (1 << 12); ++j) {
				memo[i][j] = -2;
			}
		}
		
		
		bitset<12>bs((1 << rs.size()) - 1);
		ld sum = getans(12, bs);
		if (sum > W)cout << "NA" << endl;
		else cout << "OK" << endl;
		
	}
	return 0;
}