数据结构题
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

题目背景

把一张纸对折100次就和珠穆朗玛峰一样高了哦
                                                                     ——syh

题目描述

水宝宝某天突发奇想,在纸上写了这样一个问题:

给一个a数组,求

,其中get(l,r,x)表示求a[l]~a[r]中x出现了几次,他很快推出了规律,

但正当他把这道题录入电脑是发现作为一个蒟蒻的他不会打latex也没找到数学符号(主要是懒),

所以他省略了那个式子,于是,题面变为了求get(l,r,x)*get(l1,r1,x)的值了.

为了防数据过大,你要对20180623取模

不保证l<r,l1<r1,遇到这种情况,请先交换一下

注:本系列题不按难度排序哦

输入描述:

第一行一个n,m 接下来一行n个数表示a[i] 接下来m行,每行l,r,l1,r1,x,表示求get(l,r,x)*get(l1,r1,x)

输出描述:

3×m行,先输出get(l,r,x),再输出get(l1,r1,x),再输出get(l,r,x)*get(l1,r1,x)
示例1

输入

复制
5 1
2 2 2 2 2
1 5 1 3 2

输出

复制
5
3
15

说明

对于所有数据1<=n,m<=10^5 ;1<=l,r,l_1,r_1<=10^5;a[i]\leq10000,x\leq100000

提示:20180623不是质数