#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ll, ll> P;

#define EACH(i,a) for (auto& i : a)
#define FOR(i,a,b) for (ll i=(a);i<(b);i++)
#define RFOR(i,a,b) for (ll i=(b)-1;i>=(a);i--)
#define REP(i,n) for (ll i=0;i<(n);i++)
#define RREP(i,n) for (ll i=(n)-1;i>=0;i--)
#define debug(x) cout<<#x<<": "<<x<<endl
#define pb push_back
#define ALL(a) (a).begin(),(a).end()

const ll linf = 1e18;
const int inf = 1e9;
const double eps = 1e-12;
const double pi = acos(-1);

template<typename T>
istream& operator>>(istream& is, vector<T>& vec) {
	EACH(x,vec) is >> x;
	return is;
}
/*
template<class... T>
ostream& operator<<(ostream& os, tuple<T...>& t) {
	for (size_t i = 0; i < tuple_size< tuple<T...> >::value; ++i) {
		if (i) os << " ";
		os << get<0>(t);
	}
	return os;
}
*/
template<typename T>
ostream& operator<<(ostream& os, vector<T>& vec) {
	REP(i,vec.size()) {
		if (i) os << " ";
		os << vec[i];
	}
	return os;
}
template<typename T>
ostream& operator<<(ostream& os, vector< vector<T> >& vec) {
	REP(i,vec.size()) {
		if (i) os << endl;
		os << vec[i];
	}
	return os;
}

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	ll L;
	while (cin >> L) {
		vector<int> r;
		{
			string str; getline(cin, str);
			stringstream ss; ss << str;
			int val;
			while ( ss >> val ) {
				r.pb(val);
			}
		}
		int N = r.size();
		vector< vector< vector<ld> > > dp;
		vector< vector<ld> > dp0(N+1, vector<ld>((1 << N), linf)); dp0[0][0] = 0;
		REP(t, N) {
			dp = vector< vector< vector<ld> > >(N+1, vector< vector<ld> >(N+1, vector<ld>((1 << N), linf)));
			dp[0] = dp0;
			REP(i, N) {
				REP(j, N+1) {
					REP(k, (1 << N)) {
						if (dp[i][j][k] >= linf-eps) continue;
						dp[i+1][j][k] = min(dp[i+1][j][k], dp[i][j][k]);
						if ((k & (1 << i)) == 0) {
							int nk = k | (1 << i);
							int nj = i+1;
							ld nv = linf;
							if (j == 0) {
//								if (dp[i][j][k] > eps) cout << i << " " << j << " " << k << " " << dp[i][j][k] << endl;
								assert(dp[i][j][k] < eps);
								nv = min(nv, (ld)2*r[i]);
							}
							else {
								int prev = j-1;
								int r1 = r[prev], r2 = r[i];
								ld dx = sqrt((r1+r2)*(r1+r2) - abs(r1-r2)*abs(r1-r2));
								nv = min(nv, dp[i][j][k]-r[prev]+dx+r[i]);
							}
							dp[i+1][nj][nk] = min(dp[i+1][nj][nk], nv);
						}
					}
				}
			}
			dp0 = dp[N];
		}
		ld ans = linf;
		REP(i, N+1) ans = min(ans, dp0[i][(1<<N)-1]);
//		cout << fixed << setprecision(10) << ans << endl;
		if (ans <= L+eps) {
			cout << "OK" << endl;
		}
		else {
			cout << "NA" << endl;
		}
	}
}