#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> P;
typedef pair<ll, P> P3;
typedef pair<P ,P> PP;
constexpr ll MOD = ll(1e9) + 7;
constexpr int IINF = INT_MAX;
constexpr ll LLINF = LLONG_MAX;
constexpr int MAX_N = int(1e6) + 5;

bool isPrime[MAX_N];

bool sieve(int n){
    fill(isPrime, isPrime+n+1, true);
    isPrime[0] = isPrime[1] = false;
    for(int i=2;i*i<=n;i++){
        if(isPrime[i]){
            for(int j=i*i;j<=n;j+=i){
                isPrime[j] = false;
            }
        }
    }
}

bool dp[35][MAX_N];

int main() {
    sieve(1e6);
    int n, x;
    while(cin >> n >> x, n){
        int v[30];
        for(int i=0;i<n;i++) cin >> v[i];
        for(int i=0;i<=n;i++) fill(dp[i], dp[i]+x+1, false);
        dp[0][0] = true;
        for(int i=0;i<n;i++){
            for(int j=0;j<=x;j++){
                dp[i+1][j] |= dp[i][j];
                if(j+v[i]<=x){
                    dp[i][j+v[i]] |= dp[i][j];
                }
            }
        }
        int ans = -1;
        for(int i=2;i<=x;i++){
            if(dp[n][i] && isPrime[i]) ans = i;
        }
        if(ans > 0){
            cout << ans << endl;
        }
        else{
            cout << "NA" << endl;
        }
    }
    return 0;
}



