// JG GAP GG
#include <iostream>
#include <cstring>
#include<vector>
#include <algorithm>
#include<cstdlib>
#include<set>
#include<math.h>
#include<map>
#include<unordered_map>
#include<iomanip>
#include<queue>

using namespace std;
using ll = long long;
using ull = unsigned long long;
ll amari = 1000000007;
#define rep(n,x) for(ll i=0;i<n;i++) cin>>x[i];
#define forr(a,b) for(ll i=a;i<b;i++);
#define vecsort(myVec,x,y) sort(myVec.begin(),myVec.end(),[](const vector<y> &alpha,const vector<y> &beta){return alpha[x] < beta[x];});
ll modpow(ll a, ll n, ll mod)
{
	ll res = 1;
	while (0 < n)
	{
		if (n & 1) res = res * a % mod;
		a = a * a % mod;
		n >>= 1;
	}
	return res;
}
ll gcd(ll x, ll y)
{
	if (x % y == 0) return y;
	else return gcd(y, x % y);
}
ll lcm(ll x, ll y)
{
	return  (y / gcd(x, y)) * x;
}
// 1or素数だと１を返す
ll primebool(ll x)
{
	for (ll i = 2; i * i <= x; i++)
	{
		if (x % i == 0) return 0;
	}
	return 1;
}
//下のnck関数のための準備
const ll MOD = amari;
vector<long long> fact_inv, inv, Com;
void init_nCk(ll n, ll SIZE) {
	fact_inv.resize(SIZE + 5);
	inv.resize(SIZE + 5);
	fact_inv[0] = fact_inv[1] = 1;
	inv[1] = 1;
	for (ll i = 2; i < SIZE + 1; i++) {
		inv[i] = MOD - inv[MOD % i] * (MOD / i) % MOD;
		fact_inv[i] = fact_inv[i - 1] * inv[i] % MOD;
	}
	Com.resize(SIZE + 5);
	Com[0] = 1;
	for (ll i = 1; i < SIZE + 1; i++) {
		Com[i] = Com[i - 1] * ((n - i + 1) * inv[i] % MOD) % MOD;
	}
}
//nCkを計算し、10^9+7で割ったあまりを返す。
ll nck(ll n, ll k)
{
	init_nCk(n, k);
	return Com[k];
}






//ここから


int main()
{
	char s;
	cin >> s;
	char ans;
	char t;
	cin >> t;
	if (s == 'Y')
	{
		if (t == 'a')
        {
          ans = 'A';
        }
		else
		{
			if (t == 'b') 
            {
              ans = 'B';
            }
			else 
            {
              ans = 'C';
            }
		}
	}
	else
	{
		ans = t;
	}


	cout << ans << "\n";
	return 0;
}
#include <iostream>
#include <cstring>

using namespace std;

int N;
long long dp[105][105][105];
int a[101];
long long X;
int len;

// f(i, j, k) -> minimo tiempo para alcanzar X tomando a i pociones y llevando j pociones actualmente con suma k

long long f(int i, int j, int k)
{
    if (i == 0)
        return k == X%len? 0LL : -1e18;
    
    if (j == N)
        return -1e18;
    
    if (dp[i][j][k] != -1)
        return dp[i][j][k];
    
    long long ans = 0;
    
    ans = max(f(i, j + 1, k),  f(i - 1, j + 1, (k + a[j])%len) + a[j]);
    
    return dp[i][j][k] = ans;
}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> N >> X;
    for (int i = 0; i < N; i++) {
        cin >> a[i];
    }
    long long ans = 1e18;
    for (int i = 1; i <= N; i++) {
        memset(dp, -1, sizeof dp);
        len = i;
        long long res = f(i, 0, 0);
        if (res > 0)
            ans = min(ans, (X - res)/i);
    }
    cout << ans << '\n';
}