#include<iostream>#include<vector>usingnamespace std;typedef pair<int,int> PII;
vector<PII> ans, tmp;constint N =5;char g[N][N];voidturn_one(int x,int y){
if(g[x][y]=='+')
g[x][y]='-';else
g[x][y]='+';}voidturn_all(int x,int y){
for(int i =0; i <4; i ++)turn_one(x, i);for(int i =0; i <4; i ++)turn_one(i, y);turn_one(x, y);// 这个点翻转了两次,因此需要翻转回来}voiddfs(int x,int y){
if(x ==3&& y ==4)// 这里是递归的终点{
bool success =true;for(int i =0; i <4; i ++)for(int j =0; j <4; j ++)if(g[i][j]=='+')
success =false;if(success)
ans = tmp;return;}if(y ==4)// 开始遍历下一行{
x ++;
y =0;}// 选择这个开关turn_all(x, y);
tmp.push_back({
x, y});dfs(x, y +1);// 恢复现场
tmp.pop_back();turn_all(x, y);// 不选择这个开关dfs(x, y +1);}intmain(){
for(int i =0; i <4; i ++)
cin >> g[i];dfs(0,0);
cout << ans.size()<< endl;for(int i =0; i < ans.size(); i ++)// 我们是从 0,0开始进行遍历,因此需要加1
cout << ans[i].first +1<<" "<< ans[i].second +1<< endl;return0;}