func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 1e3 + 100;   int N;   int p[MAXN], rp[MAXN];   char ans[MAXN][MAXN];   bool v[MAXN];   int lvl, C;   bool pd;   bool id(int* a, int as) {     for (int i = 1; i <= as; i++)       if (a[i] != i) return false;     return true;   }   char get_dir(bool d) { return d ?  /  :     ; }   char get_dir(int a, int b) {     assert(a != b);     return get_dir(a < b);   }   bool addE(int a, int b) {     assert(a != b);     if (a < b) {       ans[lvl][a] = ans[lvl][b] =  / ;       return true;     }     if (a > b) {       ans[lvl][a] = ans[lvl][b] =     ;       return false;     }     assert(false);     return false;   }   void init(int n) {     assert(p[n] != n);     v[n] = true;     C = n;     for (int i = p[n]; i != n; i = p[i]) {       v[i] = true;       pd = addE(p[i], i);       lvl--;     }   }   int addFE(int n, int lf) {     if ((pd) xor (n > C)) {       ans[lvl][n] = get_dir(p[n], C);       ans[lf][C] = get_dir(C, n);       pd = C < n;       ans[lf][n] = get_dir(C, n);       return -1;     }     if ((p[n] < n) xor (n < C)) {       ans[lvl - 1][C] = get_dir(p[n], C);       ans[lf][C] = get_dir(C, n);       ans[lf][n] = get_dir(C, n);       return -1;     }     assert(false);     return -1;   }   void fill(int n) {     v[n] = true;     int l = 1, s = -1;     for (int i = p[n]; i != n; i = p[i]) {       v[i] = true, l++;       if (((p[n] < n) xor (C < n)) or (pd xor (n > C))) s = i;     }     lvl += addFE(s, lvl - l);     for (int i = p[s]; i != s; i = p[i]) {       addE(p[i], i), lvl--;     }   }   int main() {     scanf( %d , &N);     lvl = N;     pd = false;     for (int i = 0; i <= N; i++) v[i] = false, p[i] = rp[i] = -1;     for (int i = 1; i <= N; i++) scanf( %d , rp + i);     for (int i = 1; i <= N; i++) p[rp[i]] = i;     for (int i = 1; i <= N; i++)       for (int j = 1; j <= N; j++) ans[i][j] =  . ;     if (id(p, N)) {       printf( %d n , N);       for (int i = 1; i <= N; i++, printf(  n ))         for (int j = 1; j <= N; j++) printf( %c , ans[i][j]);       return 0;     }     for (int i = 1; i <= N; i++)       if (p[i] == i) v[i] = true;     for (int i = 1, c = 1; c and i <= N; i++)       if (!v[i]) init(i), c = 0;     lvl++;     for (int i = 1; i <= N; i++)       if (!v[i]) fill(i);     printf( %d n , N - 1);     for (int i = 1; i <= N; i++, printf(  n ))       for (int j = 1; j <= N; j++) printf( %c , ans[i][j]);     return 0;   }   