#include<iostream>
#include<string>
#include<sstream>
#include<cmath>
#include<algorithm>

constexpr int MAX_N = 12;
constexpr double INF = (int)1e9;

int n, w;
int a[MAX_N];
double memo[MAX_N][(1 << MAX_N)];

double func(int x1, int x2) {
	return sqrt(pow(a[x1] + a[x2], 2) - pow(abs(a[x1] - a[x2]), 2));
}

double solve(int m, int S) {
	if (memo[m][S] > 0.0)
		return memo[m][S];
	if (S == (1 << n) - 1)
		return memo[m][S] = a[m];
	double res = INF;
	for (int i = 0; i < n; ++i) {
		if (!((S >> i) & 1))
			res = std::min(res, solve(i, S | (1 << i)) + func(m, i));
	}
	return memo[m][S] = res;
}

void output() {
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < (1 << n); ++j)
			memo[i][j] = 0.0;
	}
	for (int i = 0; i < n; ++i) {
		if (solve(i, (1 << i)) + a[i] <= (double)w) {
			std::cout << "OK" << std::endl;
			return;
		}
	}
	std::cout << "NA" << std::endl;
}

int main() {
	std::string str;
	while (1) {
		std::getline(std::cin, str);
		if (std::cin.eof())
			break;
		std::stringstream ss(str);
		ss >> w;
		n = 0;
		while (!ss.eof()) {
			ss >> a[n];
			++n;
		}
		output();
	}
	return 0;
}