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

using namespace std;

double dp[12][1 << 12];

int main(){
	int width;
	while(cin >> width){
		for(int i = 0; i < 12; ++i){
			for(int j = 0; j < (1 << 12); ++j){ dp[i][j] = -1.0; }
		}
		string line;
		getline(cin, line);
		stringstream ss(line);
		vector<int> cakes;
		int r;
		while(ss >> r){
			cakes.push_back(r);
			int index = cakes.size() - 1;
			dp[index][1 << index] = static_cast<double>(r * 2);
		}
		int n = cakes.size();
		for(int j = 0; j < (1 << n); ++j){
			for(int i = 0; i < n; ++i){
				if(!(j & (1 << i))){ continue; }
				for(int k = 0; k < n; ++k){
					if(j & (1 << k)){ continue; }
					int mask = j | (1 << k);
					double c = cakes[i] + cakes[k];
					double a = cakes[i] - cakes[k];
					double b = sqrt(c * c - a * a);
					double p = dp[i][j] - cakes[i] + b + cakes[k];
					dp[k][mask] = (dp[k][mask] < 0.0 ? p : min(dp[k][mask], p));
				}
			}
		}
		bool flag = (n == 0);
		for(int i = 0; i < n; ++i){
			if(dp[i][(1 << n) - 1] <= width + 1e-6){ flag = true; }
		}
		cout << (flag ? "OK" : "NA") << endl;
	}
	return 0;
}