#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<map>
#include<cstring>
using namespace std;

#define rep(i,n) for(int i=0;i<n;i++)
#define REP(n) rep(i,n)
#define all(n) n.begin(),n.end()

const int MAXN = 1000 * 1000 + 10;

bool p[MAXN];
bool ok[MAXN];

int main()
{
    p[0] = p[1] = 1;
    REP(MAXN)if(!p[i])for(int j = i*2;j<MAXN;j+= i)p[j] = 1;

    int n, x;
    while(cin >> n >> x && n)
    {
        memset(ok, 0, sizeof(ok));
        vector<int> dish;
        int t = 0;

        REP(n) {cin >> t; dish.push_back(t); ok[t] = 1;}

        sort(all(dish));
        //REP(n) cout << "d" << i << " " << dish[i] << endl;

        rep(j,x+1)if(ok[j])REP(n)for(int k = j+dish[i];k<x+1;k+=dish[i])ok[k] = 1;

        int ans = 0;
        for(int i = x-1;i >= 0; i--)if((!p[i]) && ok[i]){ ans = i; break;}

        if(ans == 0) cout << "NA" << endl;
        else cout << ans << endl;
    }

    return 0;
}