import java.io.*;
import java.util.*;
import java.util.Arrays;

public class ss {

public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		ArrayList<Integer> ar = new ArrayList<Integer>();
		ArrayList<Integer> ap = new ArrayList<Integer>();
		
		int[][] pole;
		
		String radek = "";
		int maxProf = 0;
		
			while(!(radek = br.readLine()).equals("0")) {
				StringTokenizer st = new StringTokenizer(radek, " ");
				int days = Integer.parseInt(st.nextToken());
				int cash = Integer.parseInt(st.nextToken());
				radek = br.readLine();
				StringTokenizer sts = new StringTokenizer(radek);
				if(days >= 1 && days <= 70000 && cash >= 1 && cash <= 40000 && (sts.countTokens() == days)) {
				pole = new int[days][days];
					int zbozi = 0;
					int zbytek = 0;
				
						
						
				
					for(int i = 0; i < days; i++) {
					if (sts.hasMoreTokens()) {
					ar.add(Integer.parseInt(sts.nextToken()));
					}
				}
				
				for (int i = 0; i < days; i++) {
					if(ar.get(i) >= 1 && ar.get(i) <= 40000) {
					zbozi = cash / ar.get(i);
					zbytek = cash % ar.get(i);
					
					for (int j = i; j < days; j++) {
						if ((j+1) < ar.size()-1) {
						pole[i][j] = (zbozi * ar.get(j + 1)) + zbytek;
						}
						
					}	
					}
				}
				
				int max = 0;
				
				for(int i = 0; i < pole.length; i++) {
					for(int j = 0; j < pole[i].length; j++) {
						 if(pole[i][j] > max) {
						  	max = pole[i][j];
						 }
					}
				}
				
				System.out.println((max - cash));

		
			}
		
		ar.clear();
			}
		}
}
