#include <bits/stdc++.h>
//#include "grader.cpp"

using namespace std;

const int MAXN = (1e7) + 7;

int n;
long long l,d[MAXN],p[MAXN];
long long dp[MAXN],ans;

long long percorri(int N, long long L, long long D[], long long P[]) {
    int i,j;
    n=N;
    l=L;
    for(i=1;i<=n;i++) d[i]=D[i-1],p[i]=P[i-1];
    for(i=n;i>=1;i--) {
        dp[i]=l-d[i]+p[i];
        for(j=i+1;j<=n && j<=i+10;j++) {
            dp[i]=min(dp[i],max(d[j]-d[i]+p[i]+p[j],dp[j]));
        }
    }
    ans=l;
    for(i=1;i<=n;i++) ans=min(ans,max(d[i]+p[i],dp[i]));
    return ans;
}