#YACS202011C5. 搭船

搭船

题目描述

有一条河,沿河有 m+1m+1 个村庄,按照次序依次编号为 00 到 mm,相邻村庄之间的距离都是 11。

某天早上,船夫在 00 号村庄开始他的工作,当天想要搭船的村民有 nn 个,其中第 ii 个村民要从 aia_i 号村庄搭船到 bib_i 号村庄。完成运输所有村民的工作后,船夫需要将船停到 mm 号村庄上。

船夫的船舱足够大,可以同时搭载任意多名村民。显然,同时搭载多名村民,可以减少重复路程。请帮助船夫计算一下,为了把所有村民运到各自的目的地,在当天的工作中,船只最少需要行走多少距离?

输入格式

第一行:两个整数 nn 和 mm; 第二行到第 n+1n+1 行:第 i+1i+1 行有两个整数表示 aia_i 和 bib_i。

输出格式

单个整数:表示船只最少需要行走多少路程才能把所有村民运到他们的目的地。

数据范围

  • 对于 30%30\%数据:1≤n≤301\leq n\leq 30 , 3≤m≤1033\leq m\leq 10^3
  • 对于 50%50\%数据:1≤n≤100001\leq n\leq 10000 , 3≤m≤1093\leq m\leq 10^9
  • 对于 100%100\%数据:1≤n≤3000001\leq n\leq 300000 , 3≤m≤1093\leq m\leq 10^9
  • 0≤ai,bi≤m0\leq a_{i},b_i\leq m

样例数据

输入:

2 10 
2 8 
6 4

输出:

14

输入:

8 15 
1 12 
3 1 
3 9 
4 2 
7 13 
12 11 
14 11 
14 13

输出:

27