import java.io.; import java.util.; public class Main{ //dp代表和 static long[][]dp; static int k; public static void main(String[] args)throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw=new PrintWriter(System.out); String[] str=br.readLine().split(" "); int num=Integer.parseInt(str[0]); int k=Integer.parseInt(str[1]); long[] arr=new long[num+1]; str=br.readLine().split(" "); for(int i=1;i<=num;i++){ arr[i]=Long.parseLong(str[i-1]); } dp=new long [num+10][k]; //要先把表格一些不和法的去掉 求最大值 去掉就是用min_value for(int j=0;j<k;j++){ dp[0][j]=Long.MIN_VALUE; } dp[0][0]=0; for(int i=1;i<=num;i++){ for(int j=0;j<k;j++){

            dp[i][(int)((j+arr[i])%k)]=Math.max(dp[i-1][j]+arr[i],dp[i-1][(int)((j+arr[i])%k)]);
        }
    }
    //这种都是累加和 直接看最后一个就好了!
    if(dp[num][0]>0){
        pw.print(dp[num][0]);

    }else{
        pw.print(-1);
    }
    pw.flush();
    pw.close();
}

}