#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("regine.in");
ofstream g("regine.out");
int n;
int st[15], ams, ev, sol;
int pune_valoare(int niv)
{
int ok = 0;
if (niv <= n && st[niv] < n)
{
st[niv]++;
ok = 1;
}
return ok;
}
int validare(int niv)
{
int ok = 1 , i;
for (i = 1; i < niv; i++)
{
if (st[niv] == st[i])
ok = 0;
}
for (i = 1; i < niv ; i++)
{
if (abs(niv - i) == abs(st[niv] - st[i]))
ok = 0;
}
return ok;
}
void tipar(int niv)
{
int i,j;
g<<n<<'\n';
for (i = 1 ; i <= n; i++)
g<<i<<" "<<st[i]<<'\n';
/* for (i = 1; i <= n; i++)
{ for (j = 1; j <= n ; j ++)
if(st[i] == j) g<<"* ";
else g<<"- ";
g<<'\n';
}
g<<'\n';*/
}
int solutie(int niv)
{
return (niv == n);
}
void bck()
{ int niv;
niv = 1;
while(niv > 0)
{
do{
ams = pune_valoare(niv);
if( ams == 1)
ev = validare(niv);
} while(ams==1&& ev==0);
if(ams == 1 && ev ==1)
{
if(solutie(niv) == 1)
{
tipar(niv);///sol++; /// tipar(niv);
niv = 0;
}
else
{ niv++;
st[niv] = 0;
}
}
else niv--;
}
}
int main()
{ sol = 0;
f>>n;
bck();
///g<<sol;
return 0;
}