#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <map>
#include <set>
#include <sstream>
#include <queue>
#include <stack>
#define INF 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a));
#define For(a,b) for(int i = a;i<b;i++)
#define LL long long
#define MAX_N 100010
using namespace std;
const int maxn = 100;
//map<int,pair<int,int> > m; mx数组的功能不能够用map的映射代替
//打印一下所记录的坐标就知道这样会少很多未知的位置
bool r[maxn][maxn],c[maxn][maxn]; // 标记某行或者某一列是否含有某个数字
int p[maxn][maxn]; // 记录数独矩阵
int g; // 记录未知未知的个数
int x[maxn],y[maxn]; // 记录所有未知位置的坐标的一个映射
bool look_around(int u,int s)
{
int e = x[u] / 3 * 3;
int r = y[u] / 3 * 3;
for(int i = e; i<e&#