P2662
#include<bits/stdc++.h>
using namespace std;
const int N=3e3+5;
int n,m,a[N],dis[N],vis[N];
void dij(){
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q;
q.push({0,0});
while(!q.empty()){
auto [A,B]=q.top();
q.pop();
if(!vis[B]){
vis[B]=1,dis[B]=A;
for(int i=1;i<=n;i++){
for(int j=0;j<=m;j++){
if(a[i]-j==1){
cout<<-1;
exit(0);
}
if(a[i]-j>0){
if(!vis[(B+a[i]-j)%a[1]]){
q.push({A+a[i]-j,(B+a[i]-j)%a[1]});
}
}
}
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dij();
int ans=0;
for(int i=0;i<a[1];i++){
if(!vis[i]){
cout<<-1;
return 0;
}
ans=max(ans,dis[i]-a[1]);
}
cout<<ans;
}