#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <cmath>
using namespace std;
#define N_MAX 10
#define INF 99999999
int W;
int N;
int R[N_MAX];
double D[N_MAX+1][N_MAX];
double dp[(1<<N_MAX)][N_MAX+1];

/*
double rec(int s, int u) {
  if(s == (1<<N) - 1) return 0;
  double res = INF;
  for(int v = 0; v < N; ++v) {
    if((s>>v) & 1) continue;
    res = min(res, D[u][v] + rec(s | (1<<v), v));
  }
  return res;
}
*/

void make() {
  for(int i = 0; i <= N; ++i) {
    for(int j = 0; j < N; ++j) {
      if(i == j) {
	D[i][j] = 0;
      } else if(i == N || R[i] == R[j]) {
	D[i][j] = R[j] * 2;
      } else {
	double d = sqrt( pow((double)(R[i]+R[j]), 2.0)
			 - pow((double)(R[i]-R[j]), 2.0) );
	D[i][j] = d - R[i] + R[j];
      }
    }
  }
}

void solve() {
  make();
  for(int i = 0; i < 1<<N; ++i) {
    if(i == (1<<N)-1) fill(dp[i], dp[i]+N+1, 0);
    else              fill(dp[i], dp[i]+N+1, INF);
  }

  for(int s = (1<<N) - 2; s >= 0; s--) {
    for(int u = 0; u <= N; u++) {
      for(int v = 0; v < N; v++) {
	if((s>>v) & 1) continue;
	dp[s][u] = min(dp[s][u], D[u][v] + dp[s|(1<<v)][v]);
      }
    }
  }
  cout << (dp[0][N] <= W ? "OK" : "NA") << endl;
}

main() {
  string line;
  while(getline(cin, line)) {
    stringstream ss;
    ss << line;
    ss >> W;
    N = 0;
    int a;
    while(ss >> a) R[N++] = a;
    solve();
  }
}