#include <stdio.h>

int n;
int k;
int prvi;
long long sol;
int a [1000000];
int x, y;
int l, d;

int min (int a, int b)
{
    if (a < b)
    {
        return a;
    }
    else
    {
        return b;
    }
}

int main ()
{
    FILE *in = fopen ("zetoni.in", "r");
    fscanf (in, "%d %d", &n, &k);
    fscanf (in, "%d", &prvi);
    x = prvi;
    for (int i = 1; i < n; i++)
    {
        fscanf (in, "%d", &y);
        a [i - 1] = y - x;
        x = y;
    }
    fclose (in);
    for (int i = 0; i < n - 1 && prvi < k; i++)
    {
        if (a [i] > 0)
        {
            if (a [i] >= k - prvi)
            {
                sol += (k - prvi);
                a [i] -= (k - prvi);
                prvi = k;
            }
            else
            {
                sol += a [i];
                prvi += a [i];
                a [i] = 0;
            }
        }
    }
    for (l = 0; l < n - 1 && a [l] >= 0; l++);
    for (d = 0; d < n - 1 && a [d] <= 0; d++);
    while (l < d)
    {
        if (d < n - 1)
        {
            int p = min (-a [l], a [d]);
            a [l] += p;
            a [d] -= p;
            sol += p;
            for (; l < n - 1 && a [l] >= 0; l++);
            for (; d < n - 1 && a [d] <= 0; d++);
        }
        else
        {
            int p = a [l];
            a [l] -= p;
            sol -= p;
            for (; l < n - 1 && a [l] >= 0; l++);
        }
    }
    FILE *out = fopen ("zetoni.out", "w");
    fprintf (out, "%lld", sol + (k - prvi));
    fclose (out);
    return 0;
}
