three kingdom
题号:NC25255
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

    天才程序员菜哭武、张老师和石头三个人已经厌倦了N皇后问题。他们在一个n*m的棋盘上玩三人象棋。经过一番激烈的拼杀,最后只剩下三个国王。
    在这个n*m的棋盘上要放置三个国王,国王之间不能互相攻击。国王之间没有区别。国王的攻击范围为切比雪夫距离1以内的格子,即假设一个国王的位置是(r,c),那么可以攻击到所有 max(|r-i|, |c-j|)=1 的位置(i,j),而且不能有多个国王放置在同一个格子当中。
菜哭武很快发现了怎么计算有多少种放置方法,但是他太懒了,想让你帮他算。你只需要输出方案数对1,000,000,007取模的结果即可。

输入描述:

    第一行两个整数t,表示有t组数据(1≤t≤105)
    接下来t行,每行两个整数n,m(1<=n,m<=109),表示棋盘的长和宽

输出描述:

对于每一组数据,输出一个整数,表示放置方案数对1,000,000,007取模的结果
示例1

输入

复制
3
2 2
3 3
4 4

输出

复制
0
8
140