小睿睿的疑惑
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

小睿睿有n个柱子,第i根柱子的高度为h[i],砍掉第i个柱子的花费为cost[i],在两个柱子i,j间砍掉其之间的柱子造桥的花费为
有m组询问,每次给定x,y,询问如果将第x根柱子的高度改为y,从第1根柱子修桥到x的最小花费
第1个和第x个柱子不能被砍
询问间相互独立,不会互相影响

输入描述:

第一行2个整数n,m

第二行n个整数,表示第i个柱子的高度为h[i]

第三行n个整数,表示砍掉第i个柱子的花费为cost[i]

接下来m行,每行2个整数X,y,题目描述中的x = ( ( X xor lastans ) mod n + n ) mod n + 1 ,其中lastans为上一个询问的答案,其初始值为0,mod为取模

输出描述:

共m行,每行一个整数,表示对应询问的答案
示例1

输入

复制
2 1
1 2
3 4
2 1

输出

复制
0

说明

解码后x为1,高度差为0且不需要砍掉柱子,答案为0
示例2

输入

复制
5 5
3673 6707 8390 4852 4421 
-7764 4211 -1276 7805 -8977 
7850 6717
3126 2134
2477 9665
4958 8485
6646 3257

输出

复制
0
2368521
0
12046670
177267

说明

解码后的询问分别为:

x:1 y:6717

0

x:2 y:2134

2368521

x:1 y:9665

0

x:4 y:8485

12046670

x:3 y:3257

177267



备注:

对于100%的数据,