using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, l) = (c[0], c[1]); var x = NList; var y = NList; var len = new List(n * 2 + 1); var dep = new List(n * 2 + 1); len.Add(0); dep.Add(0); var xi = 0; var yi = 0; while (xi < n || yi < n) { if (yi == n) { len.Add(x[xi]); dep.Add(dep[^1] + 1); ++xi; } else if (xi == n) { len.Add(y[yi]); dep.Add(dep[^1] - 1); ++yi; } else if (x[xi] < y[yi]) { len.Add(x[xi]); dep.Add(dep[^1] + 1); ++xi; } else { len.Add(y[yi]); dep.Add(dep[^1] - 1); ++yi; } } var lastht = int.MinValue; var lasttea = -1; for (var i = 1; i < dep.Count; ++i) { if (dep[i - 1] > dep[i] && lastht <= dep[i]) { lastht = dep[i]; lasttea = i; } } var max = dep.Max(); var min = dep.Min(); if (max == 0) WriteLine((long)l * (max - min) + len[1]); else WriteLine((long)l * (max - min - 1) + len[lasttea]); } }