/* foo.c: gcc -Wall -o foo foo.c
 *   Copyright(c) 2006 wangcong. All rights reserved.
  */
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define _O_O_(x) x*x
#define p__(s) {fprintf(stderr,(s));return -1;}
#define T_T(x) x;x;x;x
#define _0_0_(y) printf(y)
#define _0__0(m,q,r) m(q(r))
static void inline s(int *a, int *b){int m;m=*a,*a=*b,*b=m;}
void p(int*,int);int l1l1=0x0;int main(int argc, char* argv[]){
int _=(int)((unsigned char)'\x1')<<8,__=(int)2["hi"],o0o0='-'-'-',*n,*f;if(argc!=2)p__("Bad usage!\n")
l1l1=atoi(argv[1]);_0__0(if,NULL==,n=_0__0(malloc,_O_O_(l1l1)*sizeof,int))p__("No memory!\n")
_0__0(if,NULL==,f=_0__0(malloc,_O_O_(l1l1)*sizeof,int)){free(n);p__("No memory!\n")}
_0__0(srand,time,NULL);for(_=0;_<_O_O_(l1l1);n[_]=_+1,f[_]=0,_++);
for(_=0;_<_O_O_(l1l1);__=_0__0((int),_O_O_(l1l1)*,rand()/(RAND_MAX+1.0)),s(&n[_],&n[__]),_++);
p(n,_O_O_(l1l1));for(_=0;_<_O_O_(l1l1);f[_]=((n[_]==_+1)?0:1),_++);
for(o0o0=0,_=0;_<l1l1*l1l1;_++){if(n[_]==_+1)f[_]=0;
if(f[_]==1){s(&n[_],&n[n[_]-1]),p(n,_O_O_(l1l1));if(n[_]==_+1)f[_]=0;}
o0o0+=f[_];if(o0o0!=0 && _==l1l1*l1l1-1)_=o0o0=0;}return 0;}
void p(int *a, int c){int i;for(i=0;i<c;printf("%d\t",a[i]),_0_0_((i%l1l1==l1l1-1)?"\n":" "),i++);T_T(T_T(_0_0_("-"))),_0_0_("\n");}
