luogu#P5012. 水の数列

水の数列

题目背景

CYJian{\rm CYJian}想到了一个很好玩的游戏呢...

题目描述

CYJian{\rm CYJian}现在给你一个长度为NN的数列,你可以选择一个数xx,然后获得一个得分,得分越大越好。

得分是这样计算的:

首先把小于等于xx的数标记,然后你的得分就是每一个连续标记的区间的长度的平方和。

CYJian{\rm CYJian}觉得这样太简单了,答案显然就是最大值嘛所以他就把得分改成了原来的得分除以你选择的数。

CYJian{\rm CYJian}还是觉得这样太简单了,所以他需要你选择的数得到的区间的个数在ll~rr的范围内。

CYJian{\rm CYJian}还是觉得这样太简单了,所以他加上了TT组询问。

CYJian{\rm CYJian}还是觉得这样太简单了,所以他决定强制在线。

输入格式

第一行两个正整数nnTT

第二行nn个正整数NumiNum_i表示CYJian{\rm CYJian}给出的数列。

接下来TT行,每行四个正整数aabbxxyy,你需要这样得到真正的llrr:

l = (a * lastans + x - 1) % n + 1;
r = (b * lastans + y - 1) % n + 1;
if (l > r) swap(l, r);

其中lastans{\rm lastans}表示上一次询问的最大分数(原始得分)和得到这个最大的分数的xx的乘积。特别的,我们令第一次询问时lastans=0{\rm lastans}=0

输出格式

TT行,每行两个正整数表示每一次询问能得到的最大的分数(原始的得分)和得到这个最大的分数的xx。特别的,如果无解输出"1 1-1\ -1"(此时 lastanslastans11)。如果有多解则输出选择的数最大的一组。

CYJianCYJian想知道你是不是蒙的,所以你还需要告诉他这一次询问的LLRRlastansmodnlastans \bmod n

具体参见样例。

5 3
3 5 1 2 4
233 666 1 3
555 999 2 3
123 987 233 888
25 5
1 3 0
10 4
2 3 0
-1 -1
3 3 0

提示

${\rm Subtask\ 1(30\ pts)}:\qquad 1 \leq N,T \leq 10^2$

${\rm Subtask\ 2(30\ pts)}:\qquad 1 \leq N,T \leq 10^3$

${\rm Subtask\ 3(40\ pts)}:\qquad 1 \leq N \leq 10^6 \qquad 1 \leq T \leq 10^3$

1Numi1061 \leq Num_i \leq 10^6

其余输入的数字均在int{\rm int}范围内。