package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
scanner.Scan()
n, _ := strconv.Atoi(scanner.Text())
scanner.Scan()
M, _ := strconv.ParseInt(scanner.Text(), 10, 64)
a := make([]int64, n)
for i := 0; i < n; i++ {
scanner.Scan()
a[i], _ = strconv.ParseInt(scanner.Text(), 10, 64)
}
d := make([]int64, n+1)
if n > 0 {
d[0] = a[0]
for i := 1; i < n; i++ {
d[i] = a[i] - a[i-1]
}
d[n] = M - a[n-1]
}
var original int64 = 0
for i := 0; i <= n; i++ {
if i%2 == 0 {
original += d[i]
}
}
suffixFlip := make([]int64, n+2)
suffixFlip[n+1] = 0
for i := n; i >= 0; i-- {
if i%2 == 0 {
suffixFlip[i] = suffixFlip[i+1] - d[i]
} else {
suffixFlip[i] = suffixFlip[i+1] + d[i]
}
}
maxGain := int64(0)
for i := 0; i <= n; i++ {
if d[i] < 2 {
continue
}
var gain int64
if i%2 == 0 {
gain = -1 + suffixFlip[i+1]
} else {
gain = (d[i] - 1) + suffixFlip[i+1]
}
if gain > maxGain {
maxGain = gain
}
}
fmt.Println(original + maxGain)
}