using System.Reflection.Metadata;
using static IO;
public class IO
{
public static IO Cin = new();
public static StreamReader reader = new(Console.OpenStandardInput());
public static StreamWriter writer = new(Console.OpenStandardOutput());
public static implicit operator string(IO _) => reader.ReadLine();
public static implicit operator char[](IO _) => reader.ReadLine().ToArray();
public static implicit operator int(IO _) => int.Parse(reader.ReadLine());
public static implicit operator double(IO _) => double.Parse(reader.ReadLine());
public static implicit operator string[](IO _) => reader.ReadLine().Split();
public static implicit operator int[](IO _) => Array.ConvertAll(reader.ReadLine().Split(), int.Parse);
public void Deconstruct(out int a, out int b) { int[] r = Cin; (a, b) = (r[0], r[1]); }
public void Deconstruct(out int a, out int b, out int c) { int[] r = Cin; (a, b, c) = (r[0], r[1], r[2]); }
public static void Loop(int end, Action<int> action, int start = 0, in int add = 1) { for (; start < end; start += add) action(start); }
public static object? Cout { set { writer.Write(value); } }
public static object? Coutln { set { writer.WriteLine(value); } }
public static void Main() { Program.Coding(); writer.Flush(); }
}
class Program
{
public static void Coding()
{
checked
{
(int n, int m) = Cin;
PriorityQueue<int, int> sockets = new();
Loop(m, _ => sockets.Enqueue(0, 0));
foreach
(int time in
(int[])Cin
) {
int used
= time + sockets.
Dequeue(); sockets.Enqueue(used, used);
}
int maximum = 0;
while (sockets.Count > 0) maximum = Math.Max(maximum, sockets.Dequeue());
Cout = maximum;
}
}
}
dXNpbmcgU3lzdGVtLlJlZmxlY3Rpb24uTWV0YWRhdGE7CnVzaW5nIHN0YXRpYyBJTzsKcHVibGljIGNsYXNzIElPCnsKcHVibGljIHN0YXRpYyBJTyBDaW4gPSBuZXcoKTsKcHVibGljIHN0YXRpYyBTdHJlYW1SZWFkZXIgcmVhZGVyID0gbmV3KENvbnNvbGUuT3BlblN0YW5kYXJkSW5wdXQoKSk7CnB1YmxpYyBzdGF0aWMgU3RyZWFtV3JpdGVyIHdyaXRlciA9IG5ldyhDb25zb2xlLk9wZW5TdGFuZGFyZE91dHB1dCgpKTsKcHVibGljIHN0YXRpYyBpbXBsaWNpdCBvcGVyYXRvciBzdHJpbmcoSU8gXykgPT4gcmVhZGVyLlJlYWRMaW5lKCk7CnB1YmxpYyBzdGF0aWMgaW1wbGljaXQgb3BlcmF0b3IgY2hhcltdKElPIF8pID0+IHJlYWRlci5SZWFkTGluZSgpLlRvQXJyYXkoKTsKcHVibGljIHN0YXRpYyBpbXBsaWNpdCBvcGVyYXRvciBpbnQoSU8gXykgPT4gaW50LlBhcnNlKHJlYWRlci5SZWFkTGluZSgpKTsKcHVibGljIHN0YXRpYyBpbXBsaWNpdCBvcGVyYXRvciBkb3VibGUoSU8gXykgPT4gZG91YmxlLlBhcnNlKHJlYWRlci5SZWFkTGluZSgpKTsKcHVibGljIHN0YXRpYyBpbXBsaWNpdCBvcGVyYXRvciBzdHJpbmdbXShJTyBfKSA9PiByZWFkZXIuUmVhZExpbmUoKS5TcGxpdCgpOwpwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIGludFtdKElPIF8pID0+IEFycmF5LkNvbnZlcnRBbGwocmVhZGVyLlJlYWRMaW5lKCkuU3BsaXQoKSwgaW50LlBhcnNlKTsKcHVibGljIHZvaWQgRGVjb25zdHJ1Y3Qob3V0IGludCBhLCBvdXQgaW50IGIpIHsgaW50W10gciA9IENpbjsgKGEsIGIpID0gKHJbMF0sIHJbMV0pOyB9CnB1YmxpYyB2b2lkIERlY29uc3RydWN0KG91dCBpbnQgYSwgb3V0IGludCBiLCBvdXQgaW50IGMpIHsgaW50W10gciA9IENpbjsgKGEsIGIsIGMpID0gKHJbMF0sIHJbMV0sIHJbMl0pOyB9CnB1YmxpYyBzdGF0aWMgdm9pZCBMb29wKGludCBlbmQsIEFjdGlvbjxpbnQ+IGFjdGlvbiwgaW50IHN0YXJ0ID0gMCwgaW4gaW50IGFkZCA9IDEpIHsgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCArPSBhZGQpIGFjdGlvbihzdGFydCk7IH0KcHVibGljIHN0YXRpYyBvYmplY3Q/IENvdXQgeyBzZXQgeyB3cml0ZXIuV3JpdGUodmFsdWUpOyB9IH0KcHVibGljIHN0YXRpYyBvYmplY3Q/IENvdXRsbiB7IHNldCB7IHdyaXRlci5Xcml0ZUxpbmUodmFsdWUpOyB9IH0KcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKSB7IFByb2dyYW0uQ29kaW5nKCk7IHdyaXRlci5GbHVzaCgpOyB9Cn0KY2xhc3MgUHJvZ3JhbQp7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgQ29kaW5nKCkKICAgIHsKICAgICAgICBjaGVja2VkCiAgICAgICAgewogICAgICAgICAgICAoaW50IG4sIGludCBtKSA9IENpbjsKICAgICAgICAgICAgUHJpb3JpdHlRdWV1ZTxpbnQsIGludD4gc29ja2V0cyA9IG5ldygpOwogICAgICAgICAgICBMb29wKG0sIF8gPT4gc29ja2V0cy5FbnF1ZXVlKDAsIDApKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKGludCB0aW1lIGluIChpbnRbXSlDaW4pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB1c2VkID0gdGltZSArIHNvY2tldHMuRGVxdWV1ZSgpOwogICAgICAgICAgICAgICAgc29ja2V0cy5FbnF1ZXVlKHVzZWQsIHVzZWQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpbnQgbWF4aW11bSA9IDA7CiAgICAgICAgICAgIHdoaWxlIChzb2NrZXRzLkNvdW50ID4gMCkgbWF4aW11bSA9IE1hdGguTWF4KG1heGltdW0sIHNvY2tldHMuRGVxdWV1ZSgpKTsKCiAgICAgICAgICAgIENvdXQgPSBtYXhpbXVtOwogICAgICAgIH0KICAgIH0KfQ==