#include #define ll long long #define r(i,n) for(ll i=0;ii-j;n--){up*=n;}ll down=1;for(ll r=j;r>=1;r--)down*=r;ret up/(down);}//nCr. ll gcd(ll a,ll b){if(auuu; //void prime(){bool x[(ll)1e6];memset(x,0,sizeof(x));rp(i,2,1e6)if(!x[i])for(ll j=i+i;j<(ll)1e6;j+=j)x[j]=1;vectorsosu;ll t;rp(i,2,1e6)if(!x[i])sosu.push_back(i);rp(i,2,(ll)1e6){if(!x[i])uuu.insert(i);}ret;} //ll ispn(ll k){if(uuu.find(k)!=uuu.end())ret 1;ret 0;}//素数判定.動作不良の可能性大. //bl ispn2(ll k){if(k==1)rt 0;if(k==2||k==3)rt 1;rp(i,2,(ll)sqrt((db)k)+1)if(k%i==0)rt 0;rt 1;} ll AmountOfDigits(ll k){ll t=0;while(k){t+=k%10;k/=10;}rt t;} char moji[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; char moji2[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; char moji3[10]={'0','1','2','3','4','5','6','7','8','9'}; //srand((unsigned int)time(NULL)); const ll INF=(ll)1e18; const ll MAX=(ll)1e5+10; const ll NIL=-1; typedef pair P; struct Node{ll p,l,r;}; Node T[(ll)1e5+10]; typedef struct edge{ll to,cost;}EDGE; int main(){ while(1){ ll n,d; cin>>n>>d; vectort(n+2,0),k(n+2,0); rp(i,1,n+1){ cin>>t[i]>>k[i]; } vectordp(n+1,0); dp[0]=0; ll tokyo=1; rp(i,1,n+1){ if(tokyo){ dp[i]=max(t[i],k[i]-d)+dp[i-1]; if(t[i]<(k[i]-d))tokyo=0; ce } dp[i]=max(k[i],t[i]-d)+dp[i-1]; if(k[i]<(t[i]-d))tokyo=1; } p(dp[n]) r0 } }