(MiniZinc)
% minizinc -D 'N=6' -s --all-solutions a.mzn
include "globals.mzn";
include "alldifferent.mzn";
int: N;
array[1..N] of var 1..N: perm1;
array[1..N] of var 1..N: perm2;
constraint alldifferent(perm1);
constraint alldifferent(perm2);
constraint forall(i in 1..N)(perm1[i] + perm2[i] + i in {N, N+1, 2*N, 2*N+1, 3*N});
solve satisfy;
output [show(i) ++ " " | i in 1..N];
output [show(perm1[i]) ++ " " | i in 1..N];
output [show(perm2[i]) ++ " " | i in 1..N];