#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <climits>
#include <complex>
using namespace std;

#define REP(i,a,n) for(int i=(a); i<(int)(n); i++)
#define rep(i,n) REP(i,0,n)
#define all(x) (x).begin(),(x).end()
#define mp make_pair
#define pb push_back
#define EPS 1e-8
#define DEB 0


int main(){
	int n,a;
	string in;
	vector<int> data;
	
	while(getline(cin,in)){
		data.clear();
		stringstream ss(in);
		ss>>n;
		while(ss>>a){
			data.push_back(a);
		}

		sort(all(data));

		int l,r,lr,rr;
		bool f = false;
		
		rep(t,2){
			double sum = 0.0;
			int sz = 1;
			int r1,r2,a;
			if( t==0 ){
				l = 0 , r = data.size()-1;
				lr = rr = data[data.size()-1];
			}else{
				l = data.size()-1, r = 0;
				lr = rr = data[0];
			}
			if( data.size()==1 ){
				if( data[0]<=n ){
					f = true;
					break;
				}
			}

#if DEB
			printf("t:%d --------------------\n",t);
			printf("(l,r)=(%d,%d)   init_r:%d\n",l,r,rr);
#endif			
			
			for(;sz<data.size();){
				r1 = data[l]+lr;
				r2 = abs(data[l]-lr);
				a = r1*r1 - r2*r2;
				sum += sqrt((double)a);
				lr = data[l];

#if DEB
				printf("sz:%d  l:%d  lr:%d  sum:%lf\n",sz+1, l, lr, sum);
#endif				

				if( t==0 )l++;
				else l--;
				sz++;
				if( sz==data.size() ) break;
				
				r1 = data[l]+rr;
				r2 = abs(data[l]-rr);
				a = r1*r1 - r2*r2;
				sum += sqrt((double)a);
				rr = data[l];

#if DEB
				printf("sz:%d  l:%d  rr:%d  sum:%lf\n",sz+1, l, rr, sum);
#endif				
				
				
				if( t==0 )l++;
				else l--;
				sz++;
				if( sz==data.size() ) break;
				
				r1 = data[r]+lr;
				r2 = abs(data[r]-lr);
				a = r1*r1 - r2*r2;
				sum += sqrt((double)a);
				lr = data[r];

#if DEB
				printf("sz:%d  r:%d  lr:%d  sum:%lf\n",sz+1,r,lr,sum);
#endif
				
				if( t==0 )r--;
				else r++;
				sz++;
				if( sz==data.size() ) break;
				
				r1 = data[r]+rr;
				r2 = abs(data[r]-rr);
				a = r1*r1 - r2*r2;
				sum += sqrt((double)a);
				rr = data[r];

#if DEB
				printf("sz:%d  r:%d  rr:%d  sum:%lf\n",sz+1,r,rr,sum);
#endif
				
				if( t==0 )r--;
				else r++;
				sz++;
				if( sz==data.size() ) break;
			}
			sum += (double)(lr+rr);
#if DEB
			printf("sum:%lf\n",sum);
#endif			
			if( sum<=(double)n ){
				f = true;
			}
		}
		puts(f?"OK":"NA");
	}
	return 0;
}