水の数列

题目背景

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

题目描述

${\rm CYJian}$现在给你一个长度为$N$的数列,你可以选择一个数$x$,然后获得一个得分,得分越大越好。 得分是这样计算的: 首先把小于等于$x$的数标记,然后你的得分就是每一个连续标记的区间的长度的平方和。 ${\rm CYJian}$觉得这样太简单了,~~答案显然就是最大值嘛~~所以他就把得分改成了原来的得分除以你选择的数。 ${\rm CYJian}$还是觉得这样太简单了,所以他需要你选择的数得到的区间的个数在$l$~$r$的范围内。 ${\rm CYJian}$还是觉得这样太简单了,所以他加上了$T$组询问。 ${\rm CYJian}$还是觉得这样太简单了,所以他决定强制在线。

输入输出格式

输入格式


第一行两个正整数$n$,$T$。 第二行$n$个正整数$Num_i$表示${\rm CYJian}$给出的数列。 接下来$T$行,每行四个正整数$a$,$b$,$x$,$y$,你需要这样得到真正的$l$和$r$: ``` l = (a * lastans + x - 1) % n + 1; r = (b * lastans + y - 1) % n + 1; if (l > r) swap(l, r); ``` 其中${\rm lastans}$表示上一次询问的最大分数(原始得分)和得到这个最大的分数的$x$的乘积。特别的,我们令第一次询问时${\rm lastans}=0$。

输出格式


$T$行,每行两个正整数表示每一次询问能得到的最大的分数(原始的得分)和得到这个最大的分数的$x$。特别的,如果无解输出"$-1\ -1$"(此时 $lastans$ 为 $1$)。如果有多解则输出选择的数最大的一组。 $CYJian$想知道你是不是蒙的,所以你还需要告诉他**这一次询问的**$L$,$R$,$lastans \bmod n$。 具体参见样例。

输入输出样例

输入样例 #1

5 3
3 5 1 2 4
233 666 1 3
555 999 2 3
123 987 233 888

输出样例 #1

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$ $1 \leq Num_i \leq 10^6$ 其余输入的数字均在${\rm int}$范围内。