#include "bits/stdc++.h"
#include<unordered_map>
#pragma warning(disable:4996)
using namespace std;

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 dp[40][1 << 20];
double sho[20][20];
int main() {
	string st;
	while (getline(cin,st)) {
		memset(sho, 0, sizeof(sho));
		vector<string>input(split(st, ' '));
		int L = stoi(input[0]);
		vector<int>rads;
		int sum = 0;
		for (int i = 1; i < input.size(); ++i) {
			rads.push_back(stoi(input[i]));
			sum += rads.back()*2;
		}
		for (int i = 0; i < rads.size(); ++i) {
			for (int j = i + 1;  j<rads.size(); ++j) {
				sho[i][j] = (rads[i] + rads[j]) - sqrt(double((rads[i] + rads[j])*(rads[i] + rads[j]) - ((rads[i] - rads[j])*(rads[i] - rads[j]))));
				sho[j][i] = sho[i][j];
			}
		}
		vector<int>perms(rads.size());
		iota(perms.begin(), perms.end(),0);
		double maxsho = 0;
		do {
			double nowsho = 0;
			for (int i = 0; i < perms.size()-1; ++i) {
				nowsho += sho[perms[i]][perms[i + 1]];
			}
			maxsho = max(maxsho, nowsho);
		} while (next_permutation(perms.begin(), perms.end()));
		if (L > sum-maxsho  ) {
			cout << "OK" << endl;
		}
		else {
			cout << "NA" << endl;
		}
	}

	return 0;
}