#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <functional>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cassert>
 
using namespace std;
 
#define REP(i,s,e) for(int i=(s); i<(int)(e); i++)
#define rep(i,n) REP(i, 0, n)
#define pb push_back
#define mp make_pair
#define all(r) (r).begin(),(r).end()
#define rall(r) (r).rbegin(),(r).rend()
#define fi first
#define se second
#define DBG(X) cout<<" "<<#X<<" : "<<X<<endl
 
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pii;

const int INF = 1e9;
const double EPS = 1e-8;
const int mod = 1e9 + 7;
const ll LINF = 1e18;

struct Input
{
	int n;char c;char str[10010];string s;ll l;double d;
	int nextInt(){scanf("%d", &n);return n;}
	ll nextLong(){scanf("%lld", &l);return l;}
	double nextDouble(){scanf("%lf", &d);return d;}
	char nextChar(){scanf("%c", &c);return c;}
	string next(){scanf("%s", str);return string(str);}
	string nextLine(){getline(cin, s);return s;}
};
Input in;

double dp[(1<<12) + 10][12 + 10];

vector<string> split(string s, char c = ' '){
	vector<string> ret;
	stringstream ss(s);
	string t;
	while(getline(ss, t, c)) ret.pb(t);
	return ret;
}

int perseInt(string s){
	int ret = 0;
	for(auto& c : s){
		ret *= 10;
		ret += c - '0';
	}
	return ret;
}

double calc(int r1, int r2){
	return sqrt((r1+r2)*(r1+r2)-(r1-r2)*(r1-r2)) + r2 - r1;
}

int main(){
	string s;
	while(getline(cin, s)){
		auto u = split(s);
		int r = perseInt(u[0]);
		vector<int> v;
		for(int i = 1; i < u.size(); i++) v.pb(perseInt(u[i]));
		int n = v.size();
		for(int i = 1; i < 1<<n; i++){
			for(int j = 0; j <= 12; j++) dp[i][j] = 1e18;
		}

		for(int i = 0; i < n; i++){
			dp[1<<i][i] = v[i] * 2;
		}

		for(int i = 1; i < 1<< n; i++){
			for(int j = 0; j < n; j++){
				if(i & (1<<j)) continue;
				int nxt = i | (1<<j);
				for(int k = 0; k < n; k++) {
					if((i & (1<<k)) == 0) continue;
					dp[nxt][j] = min(dp[nxt][j], dp[i][k] + calc(v[k], v[j]));
				}
			}
		}
		double ans = 1e18;
		int goal = (1<<n) -1;
		for(int i = 0; i < n; i++) ans = min(ans, dp[goal][i]);
		cout<<(ans <= r ? "OK" : "NA")<<endl;
	}
}