import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;
import std.ascii;
import std.bigint;
import std.container;

double offset(int lr, int rr) {
	return sqrt((lr+rr)^^2.-(lr-rr)^^2);
}

void main() {
	while(!stdin.eof()) {
		auto s = array(map!(a => to!int(a))(readln().strip().split()));
		if(s.empty())
			break;
		int n = cast(int)s.length-1;
		int l = s[0];
		int [] r = s[1..$];
		double[][] dp = new double[][](1L<<12,n);
		for(int i; i < 1<<n; ++i){
			for(int j; j < n; ++j){
				dp[i][j] = l+100;
			}
		}
		for(int i; i < n; ++i){
			dp[1<<i][i] = r[i];
		}
		for(int i = 1; i < 1<<n; ++i){
			for(int j; j < n; ++j) {
				if(i & 1<<j)
					continue;
				for(int k; k < n; ++k) {
					if(i & 1<<k) {
						dp[i|1<<j][j] = min(dp[i|1<<j][j], dp[i][k]+offset(r[k],r[j]));
					}
				}
			}
		}
		for(int i; i < n; ++i){
			dp[(1<<n)-1][i] += r[i];
		}
		if(reduce!(min)(dp[(1<<n)-1]) > l)
			writeln("NA");
		else
			writeln("OK");
	}
}