涛酱和策策的游戏again(by良心出题人wzc)
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

涛酱和策策在训练之余会玩一些小游戏来放松头脑,今天他们又在玩小游戏,wzc在边上围观并记录了他们的游戏。
涛酱为策策准备了一个n*m的棋盘,他限制了其中某些格子是不可放置的。
策策的任务是用1*2的长方形填满这个棋盘除了不可放置的格子外的所有格子。(长方形水平或竖直放置均可,但相互之间不可重叠,且不能放在不可放置的格子上)

现在策策想知道他有多少种可行的摆放方案。

输入描述:

输入包含多组测试数据。(每个测试点最多10组)
每组数据的第一行包含三个整数n,m,k,分别代表棋盘的长宽,以及棋盘上多少个格子被限制了不可放置。(1<=n,m<=11,0<=k<=n*m)
接下来k行,每行两个整数a,b。代表第a行第b列的格子被限制了不可放置。(1<=a<=n,1<=b<=m)
当输入的n=0,m=0,k=0表示输入终止,且该组数据无需处理。

输出描述:

每组测试数据输出一个整数代表可行的摆放方案数量,每组样例输出占一行。
示例1

输入

复制
3 3 1
2 2
1 2 0
1 3 0
4 11 0
10 11 0
5 5 3
1 3
2 1
3 2
5 5 3
1 3
2 3
3 1
0 0 0

输出

复制
2
1
0
51205
3852472573499
0
80

说明


备注: