#include using namespace std; typedef long long LL; const int N = 100010; struct Event { int pos, type; }; int n, l, x[N], y[N], cur, ma, mi, last, nxt, p, laps; LL ans; Event events[N * 2]; int main() { scanf("%d%d", &n, &l); for (int i = 0; i < n; ++i) scanf("%d", &x[i]); for (int i = 0; i < n; ++i) scanf("%d", &y[i]); int xi = 0, yi = 0, idx = 0; while (xi < n || yi < n) { if (xi == n) events[idx++] = { y[yi++], -1 }; else if (yi == n) events[idx++] = { x[xi++], 1 }; else if (x[xi] < y[yi]) events[idx++] = { x[xi++], 1 }; else events[idx++] = { y[yi++], -1 }; } cur = ma = 0, mi = n; last = -1; for (int i = 0; i < n * 2; ++i) { cur += events[i].type; if (cur >= ma) { ma = cur; last = i; } if (cur <= mi) mi = cur; } nxt = (last + 1) % (n * 2); p = events[nxt].pos; laps = ma - mi - (ma > 0 ? 1 : 0); ans = 1LL * laps * l + p; printf("%lld\n", ans); return 0; }