#include<iostream>
#include<vector>
using namespace std;
int N;
vector<int> P;
bool canDeliver(int speed, int foods)
{
for(int i = 0; i < N; i++)
{
foods -= P[i];
if(foods < 0)
{
return false;
}
foods += speed;
}
return true;
}
int binarySearchMinSpeed(int total, int M)
{
int min = 0;
int max = total - M;
int result = max;
while(min <= max)
{
int mid = min + (max - min) / 2;
if(canDeliver(mid, M))
{
result = mid;
max = mid - 1;
}
else
{
min = mid + 1;
}
}
return result;
}
int main()
{
cin >> N;
int M;
cin >> M;
P.resize(N);
int total = 0;
for(int i = 0; i < N; i++)
{
cin >> P[i];
total += P[i];
}
int result = binarySearchMinSpeed(total, M);
cout << result << endl;
return 0;
}