#include <iostream>
#include <cstring>
#define MAX 1000000
using namespace std;

int n,x,d[31];
bool p[MAX+1],dp[MAX+1];

void isPrime(){
   memset(p,1,sizeof(p));
   p[0] = p[1] = false;
   for(int i=2;i*i<=MAX;i++){
      for(int j=i+i;j<=MAX;j+=i)
         p[j] = false;
   }
}

int main(){
   isPrime();
   while(cin >> n >> x,n||x){
      memset(dp,0,sizeof(dp));
      for(int i=0;i<n;i++) cin >> d[i];
      
      dp[0] = true;
      for(int i=0;i<=x;i++){
         if(dp[i]){
            for(int j=0;j<n;j++){
               if(i + d[i] >= x) continue;
               dp[i + d[j]] = true;
            }
         }
      }
      
      bool ju = true;
      for(int i=x;i>0;i--){
         if(p[i] && dp[i]){ cout << i << endl; ju = false; break; }
      }
      if(ju) cout << "NA" << endl;
   }
}