Go: // 九九を出すだけ
package main
import (
	"fmt"
	"os"
	"bufio"
)
var out = bufio.NewWriter(os.Stdout)

func main(){
	defer out.Flush()
	for i:=1; i<10; i++{
		for j:=1; j<10; j++{
			fmt.Fprintf(out, "%dx%d=%d\n", i, j, i*j)
		}
	}
}

C++: #include<iostream>

int main()
{
    for(int i=1;i<10;++i)
    {
        for(int x=1;j<10;++j)
        {
            std::cout << i << 'x' << x << '=' << i*x << endl;
        }
    }
}

C++: #include<iostream>
using namespace std;
int main()
{
	int a;
	int b;
	for (a=1;a<=9;a++)
	{
		for(b=1;b<=9;b++)
		{
			cout << a << "X" << b << "=" << a*b << endl;
		}
	}
return 0;

}

C++: #include<iostream>
int main(void){
  int i,j;
  for (i=1;i<=9;i++){
    for(j=1;j<=9;j++){
      printf("%dx%d=%d\n",i,j,i*j);
    }
  }
    return 0;
}

C++: #include<iostream>

int main()
{
	for(int i=1;i<10;++i)
	{
		for(int j=1;j<10;++j)
		{
			std::cout << i << 'x' << j << '=' << i*j << '\n';
		}
	}
}

C++: #include <iostream>

using namespace std;

int main() {
	for(int i = 1;i < 10; i++){
		for(int j = 1; j < 10; j++){
			cout << i << "x" << j << "=" << i*j << endl;
		}
	}
	return 0;
}

C++: #include <iostream>

using namespace std;

int main()
{
    for(int a=1;a<=9;a++)
    {
        for(int b=1;b<=9;b++)
            cout << a << "x" << b << "=" << a*b <<endl;
    }
    return 0;
}

C++: #include <iostream>
using namespace std;

int main()
{
	for(int i = 1; i < 10; i++)
	{
		for(int j = 1; j < 10; j++)
		{
			cout << i << 'x' << j << '=' << i*j << endl;
		}
	}
	return 0;
}

C++: #include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector> 
#include<limits>
#include<numeric>
#include<type_traits>
#include<math.h>
using namespace std;

#define rep(i, n) for(int i = 0; i < (int)(n); i++)
#define in(x) cin >> x
#define out(str) cout << str << endl

template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }



int main(){
    rep(i,9){
        rep(j,9){
            cout<<i+1<<"x"<<j+1<<"="<<(i+1)*(j+1)<<endl;
        }
    }
}

C++: #include <iostream>

using namespace std;

int main(){
    int a;
    for(int i=1;i<=9;i++){
        for(int j=1;j<=9;j++){
            a=i*j;
            cout<<i<<"*"<<j<<"="<<a<<endl;
        }
    }
    return 0;
}

C++: #include<iostream>
using namespace std;

int main(){

    for(int i=1; i<=9; i++){
        for(int j=1; j<=9; j++){
            cout<<i<<"x"<<j<<"="<<i*j<<endl;
        }
    }

    return 0;
}

C++: #include<iostream>
using namespace std;


int main(){
	
	for(int i = 1; i <= 9; i++){
		for(int j = 1;j <= 9; j++){
			cout<< i <<"x"<< j << "=" << i*j <<endl;
		}
	}
	return 0;
}

C++: #include <bits/stdc++.h>

#define times(n, i) uptil(0, n, i)
#define upto(f, t, i) for(auto _##i = (t), i = decltype(_##i)(f) poi i <= _##i poi i++)
#define uptil(f, t, i) for(auto _##i = (t), i = decltype(_##i)(f) poi i < _##i poi i++)
#define downto(f, t, i) for(auto i = (f), _##i = decltype(i)(t) poi i >= _##i poi i--)
#define downtil(f, t, i) for(auto i = (f), _##i = decltype(i)(t) poi i > _##i poi i--)

#define unless(c) if(!(c))
#define until(c) while(!(c))
#define loop while(true)

#define poi ;

using namespace std poi

int main(){
    upto(1, 9, i) upto(1, 9, j) cout << i << 'x' << j << '=' << i * j << endl poi
    return 0 poi
}

C++: main(){
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
printf("%d*%d=%d",i,j,i*j);
}

C++: #include <iostream>

using namespace std;

int main(void)
{
  for(int i=1;i<10;i++)
    for(int j=1;j<10;j++)
      cout << i << "x" << j << "=" << i*j << endl;

  return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;
int main()
{
	for(int i=1;i<=9;i++)
	for(int j=1;j<=9;j++)
	{
		printf("%dx%d=%d\n",i,j,i*j);
	}
 }

C++: #include <iostream>
using namespace std;

int main(){
	for(int i=1; i<=9; ++i){
		for(int j=1; j<=9; ++j){
			cout << i << "x" << j << "=" << i*j << endl;
		}
	}

	return 0;
}

C++: #include<stdio.h>

int main(){
	for(int i = 1; i <10; i++)for(int j = 1; j < 10;j++)printf("%dx%d=%d\n", i,j,i *j);
	return 0;
}

C++: 

#include <iostream>
using namespace std;


int main(void)
{
    int i,j;
    
    for(i = 1;i < 10 ; i++){
        for(j=1 ;j < 10 ;j++){
            cout << i << "x" << j << "=" << i*j << endl;
        }
    }
    
    return 0;
}

C++: #include<stdio.h>
int main(void)
{
	int i,j;
	for(i=1;i<=9;i++){
	for(j=1;j<=9;j++){
	printf("%dx%d=%d\n",i,j,i*j);
	}
	}
	return 0;
}

C++: #include <cstdio>
#include <cstring>
#include <algorithm>
char m[1024][1025];
int a[1024];
bool check(int n)
{
    if ('1' == m[a[1]][a[0]])
        return false;
    for (int i = 1; i < n; ++ i)
        if ('0' == m[a[i]][a[i + n]])
            std :: swap(a[i], a[i + n]);
    int cnt = 1;
    for (int i = 1; i < n; ++ i)
    {
        if ('1' == m[a[0]][a[i]])
            ++ cnt;
        else
        {
            bool flag = false;
            for (int j = 1; j < n; ++ j)
                if ('1' == m[a[j]][a[i]])
                {
                    flag = true;
                    break;
                }
            if (false == flag)
                return false;
        }
    }
    return cnt * 2 >= n;
}
bool use[1024];
int b[1024];
void arrange(int n)
{
    memset(use, false, 2 * n);
    for (int i = 0; i < n * 2; ++ i)
        b[i] = a[i];
    int size = 1;
    for (int i = 1; i < n * 2; ++ i)
        if (!use[i] && '0' == m[0][b[i]])
            for (int j = 1; j < n * 2; ++ j)
                if (i != j && !use[j] && '1' == m[0][b[j]] && '0' == m[b[i]][b[j]])
                {
                    a[size] = b[j];
                    a[n + size ++] = b[i];
                    use[i] = use[j] = true;
                    break;
                }
    for (int i = 1; i < n * 2; ++ i)
        if (!use[i] && '0' == m[0][b[i]])
            for (int j = 1; j < n * 2; ++ j)
                if (i != j && !use[j] && '0' == m[0][b[j]])
                {
                    a[size] = b[j];
                    a[n + size ++ ] = b[i];
                    use[i] = use[j] = true;
                    break;
                }
    for (int i = 1; i < n * 2; ++ i)
        if (!use[i] && '0' == m[0][b[i]])
            for (int j = 1; j < n * 2; ++ j)
                if (i != j && !use[j] && '1' == m[0][b[j]])
                {
                    a[size] = b[j];
                    a[n + size ++] = b[i];
                    use[i] = use[j] = true;
                    break;
                }
    for (int i = 1; i < n * 2; ++ i)
        if (!use[i] && '1' == m[0][b[i]])
            for (int j = 1; j < n * 2; ++ j)
                if (i != j && !use[j] && '1' == m[0][b[j]])
                {
                    a[size] = b[j];
                    a[n + size ++] = b[i];
                    use[i] = use[j] = true;
                    break;
                }
    for (int i = 1; i < n * 2; ++ i)
        if (!use[i])
        {
            a[0] = 0;
            a[n] = b[i];
            break;
        }
}
void solve(int n)
{
    if (1 == n)
        return ;
    n /= 2;
    check(n);
    arrange(n);
    while (!check(n))
        puts("FUCK");
    for (int i = 0; i < n; ++ i)
        printf("%d %d\n", a[i] + 1, a[i + n] + 1);
    solve(n);
}
int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        for (int i = 0; i < n; ++ i)
            for (int j = 0; j < n; ++ j)
                scanf(" %c", &m[i][j]);
        for (int i = 0; i < n; ++ i)
            a[i] = i;
        solve(n);
    }
}

C++: #import<cstdio>
int Q(int a,int b){return a>9?0:b<10?printf("%dx%d=%d\n",a,b,a*b),Q(a,b+1):Q(a+1,1);}int main(){Q(1,1);}