005 - devilswalk
時間制限 1 秒 / メモリ制限 256 MB / 得点 100 / x 13 /
問題
うくさんは横 W× 縦 H マスからなる長方形の形をした街に住んでいます。 うくさんは 1 秒ごとに街の外に出ないように隣接する上下左右のいずれかのマスに移動します。
N 個のマスには甜菜が埋まっていて、通ることができません。 うくさんは毎日†最高のメロンパン†をお散歩を兼ねてちょうど T 秒間かけて買いに行きます。
うくさんは最初マス (SX,SY) にいて、†最高のメロンパン†はマス (GX,GY) にあるお店で売っています。 この街ではとても引っ越しが多いので、マス (SX,SY) とマス (GX,GY) はとても頻繁に変わります。
ところで、うくさんはお散歩の道順が一体何種類あるのか気になり始めてしまいました。
マス (SX,SY) とマス (GX,GY) のペアが Q 個与えられるので、それぞれのペアについて、 ちょうどT秒間かけてマス (SX,SY) からマス (GX,GY) に移動する道順の数を求めてください。
求める数は非常に大きくなり得るので、109+7 で割った余りを答えてください。
ある二つの道順について、各 k(1≤k≤T) について、k 番目に訪れた頂点が一致している時、 そしてその時に限りその二つの道順は同一であると定義します。
入力
W H T N TX1 TY1 TX2 TY2 : TXN TYN Q SX1 SY1 GX1 GY1 SX2 SY2 GX2 GY2 : SXQ SYQ GXQ GYQ
1 行目には, マスの横の長さ W と縦の長さ H、お散歩の時間 T(1≤W,H≤16,2≤W×H,1≤T≤106) が与えられます。
W×H と T は偶数であることが保証されています。
2 行目には, 埋まっている甜菜の個数 N(0≤N≤W×H−2) が与えられます。
つづく N 行のうち i 行目には, TXi,TYi(1≤TXi≤W,1≤TYi≤H) が与えられます。
これは i 番目の甜菜がマス (TXi,TYi) に埋まっていることを意味します。
i≠j(1≤i,j≤N) ならば TXi≠TXj または TYi≠TYj であることが保証されています。
N+3 行目には, マス (SX,SY) とマス (GX,GY) のペアの個数 Q(1≤Q≤104) が与えられます。
つづく Q 行のうち j 行目には, SXj,SYj,GXj,GYj(1≤SXj,GXj≤W,1≤SYj,GYj≤H) が与えられます。
これは j 番目のペアがマス (SXj,SYj) とマス (GXj,GYj) であることを意味します。
マス (SXj,SYj) とマス (GXj,GYj) には甜菜が埋まっていないことが保証されます。
街の甜菜が埋まっていない各マスについて、必ず上下左右いずれかの方向には移動できることが保証されます。
出力
出力は Q 行からなります。
j(1≤j≤Q) 行目にはマス (SXj,SYj) からマス (GXj,GYj) までちょうど T 秒間で移動する道順の数を 109+7 で割った余りを出力してください。
入出力例
入力例 1
5 4 4 1 2 2 2 1 1 3 3 1 1 5 1
出力例 1
2 1
街の様子は以下の図のようになります。

一つ目のペアについて、考えられる道順は
- (1,1)->(1,2)->(1,3)->(2,3)->(3,3)
- (1,1)->(2,1)->(3,1)->(3,2)->(3,3)
の二通りなので、道順の数は 2 となります。
二つ目のペアについて、考えられる道順は
- (1,1)->(2,1)->(3,1)->(4,1)->(5,1)
の一通りなので、道順の数は 1 となります。
入力例 2
5 4 2 3 1 3 2 2 3 1 2 1 1 1 2 1 1 5 1
出力例 2
0 0
街の様子は以下の図のようになります。

道順が存在しない場合もあります。
散歩の途中でメロンパン屋さんを通ったとしても、ちょうど T 秒後にメロンパン屋さんにいない場合は道順としてカウントされないことに注意してください。
入力例 3
6 6 6 3 1 1 2 5 5 3 2 3 3 3 3 2 2 2 2
出力例 3
361 271
入力例 4
16 16 10000 0 1 1 1 16 16
出力例 4
810965164
109+7 で割った余りを出力してください。