#P2522. 最近的城市

最近的城市

Background

在一条线上有 nn 座城市,其中第 ii 座城市的位置是 aia_{i},两座城市xx,yy之间的距离为axay|a_{x} - a_{y}|。 我们定义如果城市 ii 到城市 jj 的距离小于由城市 ii 到其他任何一座城市的距离,那么, jjii最近的城市,例如,如果城市位于点[0,8,12,15,20][0,8,12,15,20]:

  • 距离城市 1 最近的城市是城市 2
  • 距离城市 2 最近的城市是城市 3
  • 距离城市 3 最近的城市是城市 4
  • 距离城市 4 最近的城市是城市 3
  • 距离城市 5 最近的城市是城市 4

在这一城市排列的规律下,每座城市的最近的城市都是唯一的,如不可能存在城市分布于[1,2,3][1,2,3]的情况,因为这样城市2同时拥有两个最近的城市1和3。

你现在正在各个城市之间旅行。如果你此刻位于城市xx,你可以执行以下操作之一:

  • 前往任何其他城市 𝑦 ,支付 axay|a_{x} - a_{y}| 枚金币;
  • 前往城市 xx 的最近的城市,支付 1 枚金币。

你会收到 𝑚 个询问。在每个查询中,你将得到两个城市,请你计算从一个城市到另一个城市所需的最少金币数。

Input

第一行包含一个整数 𝑡 ( 1 𝑡 10410^4 ) - 测试用例的数量。

每个测试用例的格式如下:

  • 第一行包含一个整数 𝑛 ( 2 nn 10510^5 );
  • 第二行包含 𝑛 个整数 a1,a2......ana_{1},a_{2}......a_{n},(0 ≤a1a_{1}<a2a_{2}<⋯<ana_{n}10910^9);
  • 第三行包含一个整数 𝑚 (1≤𝑚≤10510^5 );
  • 接下来的𝑚 行;其中第 𝑖 行包含两个整数 xix_{i}yiy_{i} ( 1≤xix_{i},yiy_{i}≤𝑛 ;xix_{i} yiy_{i}),表示在第 ii 次查询中,你必须计算从城市 xix_{i} 到城市 yiy_{i} 所需要花费的最少金币数。

输入的其他限制

  • 在每个测试案例中,对于每个城市,其最近的城市是唯一确定的;
  • 所有测试用例中 𝑛 的总和不超过 10510^5
  • 所有测试用例中 𝑚 的总和不超过 10510^5

Output

对于每个查询,打印一个整数 —— 必须花费的最少金币数。

Samples

1
5
0 8 12 15 20
5
1 4
1 5
3 4
3 2
5 1
3
8
1
4
14

Limitation

2s, 256 megabytes for each test case.

From

Educational Codeforces Round 161 ,C题