constint Maxn =1e5+5;const LL Mod =998244353;struct Cantor {int n;int c[Maxn], BIT[Maxn], Bit[Maxn];
LL order, fac[Maxn];
Cantor (){ memset (Bit,0,sizeof Bit); memset (BIT,0,sizeof BIT);}int lowbit (int x){return x &-x;}void Update (int Index,int x,int*str){for(int i = Index; i < Maxn; i += lowbit (i))
str[i]+= x;}int Sum (int x,int*str){int res =0;for(int i = x; i >=1; i -= lowbit (i))
res += str[i];return res;}void MakeSet (){
fac[1]=1;for(int i =1; i <= n; i++){
fac[i]= fac[i -1]* i;
fac[i]%= Mod;}}
LL Get_order (){
LL sum =0;for(int i = n; i >=1; i--){
sum +=(LL)Sum (c[i], BIT)* fac[n - i];
sum %= Mod;
Update (c[i],1, BIT);}
order = sum;return sum;}void Get_Seq (){
LL tem = order -1;for(int i =1; i <= n; i++) Update (i,1, Bit);for(int i =1; i <= n; i++){int l =1, r = n, x = tem / fac[n - i]+1;
tem %= fac[n - i];while(l +1< r){int mid = l + r >>1;if(Sum (mid, Bit)< x)
l = mid;else
r = mid;}if(Sum (l, Bit)== x) c[i]= l;else c[i]= r;
Update (c[i],-1, Bit);}}};