#include <iostream>
#include <string>
#include <sstream>
#include <stack>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <queue>

#define rep(i, n) for(int i = 0; i < (n); i++)
#define FOR(i, a, n) for(int i = (a); i < (n); i++)
#define MP make_pair
#define all(s) (s).begin(), (s).end()
#define rev(s) (s).rbegin(), (s).rend()
#define X first
#define Y second

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> P;

const double INF = 1e10;

double dist(int a, int b){
	return sqrt((double)(a+b)*(a+b) - (a-b)*(a-b));
}

double memo[1<<12][12];
int r[12];
int n;
double tsp(int visit, int pos){
	if(memo[visit][pos] != INF) return memo[visit][pos];
	if(visit == (1<<n)-1) return r[pos];

	double res = 1e10;
	rep(i, n){
		int next = (1<<i); 
		if(next&visit) continue;
		visit |= next;
		res = min(res, dist(r[pos], r[i])+tsp(visit, i));
		visit &= ~next;
	}
	return memo[visit][pos] = res;
}

int main(){
	//freopen("test.txt", "r", stdin);
	string s;
	while(getline(cin, s)){
		stringstream ss;
		ss << s;
		int len;
		ss >> len;
		n = 0;
		int x;
		while(ss >> x){
			r[n++] = x;
		}
		rep(i, 1<<12) rep(j, 12) memo[i][j] = INF;

		double ans = INF;
		rep(i, n){
			ans = min(ans, r[i]+tsp(1<<i, i));
		}

		cout << (ans<=len?"OK":"NA") << endl;
	}

	return 0;
}