program ex;
var
a,b,c,h:array[0..1000000] of int64;
i,n:longint;
maxt,p,maxf:int64;
begin
readln(n,p);
read(a[1]);
b[1]:=a[1];
h[1]:=a[1];
c[1]:=a[1];
maxt:=a[1];
maxf:=-1000000000000000000;
for i:=2 to n do
begin
read(a[i]);
if h[i-1]+a[i]>=a[i] then
h[i]:=h[i-1]+a[i]
else h[i]:=a[i];
if h[i]>=maxt then
begin
maxt:=h[i];
b[i]:=h[i];
end
else b[i]:=maxt;
if b[i-1]+c[i-1]>=maxf then begin
c[i]:=b[i-1]+c[i-1];
maxf:=c[i]
end
else c[i]:=maxf;
end;
if a[1]>maxf then maxf:=a[1];
write(maxf mod p);
end.
var
a,b,c,h:array[0..1000000] of int64;
i,n:longint;
maxt,p,maxf:int64;
begin
readln(n,p);
read(a[1]);
b[1]:=a[1];
h[1]:=a[1];
c[1]:=a[1];
maxt:=a[1];
maxf:=-1000000000000000000;
for i:=2 to n do
begin
read(a[i]);
if h[i-1]+a[i]>=a[i] then
h[i]:=h[i-1]+a[i]
else h[i]:=a[i];
if h[i]>=maxt then
begin
maxt:=h[i];
b[i]:=h[i];
end
else b[i]:=maxt;
if b[i-1]+c[i-1]>=maxf then begin
c[i]:=b[i-1]+c[i-1];
maxf:=c[i]
end
else c[i]:=maxf;
end;
if a[1]>maxf then maxf:=a[1];
write(maxf mod p);
end.