警方正在筹备一次大规模的抓捕行动,希望能将城中大部分重要的犯罪分子绳之以法。警方内部的信息流转必须尽可能严密,以防泄密。每一位参与抓捕行动的侦探(Detective Officer, DO)都受到严格的规章制度约束。
侦探之间共享的信息以所谓的“情报(drops)”形式传递。情报必须口头传达,不得记录在任何媒介、电子设备、纸张等上。任何侦探只能与他有双向连接的特定侦探共享情报。每位侦探都有义务尽快将情报原封不动地传达给他所有有连接的伙伴,但收到情报的侦探除外。
总督察(Chief Inspector, CI)需要决定哪些侦探对之间建立连接。这组最终的连接集合被称为“最终组(final group, FG)”。在这个最终组(FG)中,必须满足一条额外的 FG 规则:绝不能出现情报传回给之前曾将其传给伙伴的侦探的情况。这意味着 FG 网络中不能存在多余的连接。
这里有一叠文件夹,每个文件夹描述了特定一对侦探之间的连接。FG 的选择分为两步。首先,CI 选择两个整数 $S$ 和 $T$(有时可能相等),并移除栈中第 $S$ 个文件夹上方和第 $T$ 个文件夹下方的所有文件夹。
接下来,在剩余的文件夹中,CI 重复上述操作。他选择两个整数 $U$ 和 $V$(有时可能相等),并移除缩减后的栈中第 $U$ 个文件夹上方和第 $V$ 个文件夹下方的所有文件夹。
CI 希望将剩余文件夹中的所有连接都用于 FG。然而,由于额外的 FG 规则,并不能保证这些连接一定能构成 FG。CI 往往经常忘记这条规则。
CI 的职业习惯无法改变。他的助手试图通过聘请一名程序员来逐步实现流程的计算机化,从而委婉地解决这个问题。他的第一个任务是计算在 CI 选择前两个值 $S$ 和 $T$ 后,可能被选出的不同 FG 的数量。对于许多不同的 $S$ 和 $T$ 值,此计算必须高效。
输入格式
第一行包含两个数字 $N$ 和 $M$ ($1 \le N, M \le 10^5$),分别表示侦探的数量和 CI 栈中文件夹的数量。侦探由整数 $1 \dots N$ 标识。接下来有 $M$ 行,每行代表一个文件夹,包含两个整数 $A$ 和 $B$ ($1 \le A < B \le N$),表示文件夹中描述连接的侦探对。行的顺序对应于栈中从上到下的文件夹顺序。
下一行包含一个数字 $Q$ ($1 \le Q \le 10^5$),表示查询的数量。接下来有 $Q$ 行,每行代表一个查询,包含两个正整数 $S$ 和 $T$ ($1 \le S \le T \le M$),即 CI 在 FG 选择的第一步中选择的数字。
输出格式
对于每个查询输入行,输出在选择过程的第二步中可以形成的、不同的 FG 的数量。
样例
输入 1
4 6 1 2 2 3 1 3 1 4 3 4 2 4 4 1 1 1 3 2 4 1 6
输出 1
1 5 6 13