#include <bits/stdc++.h>
using namespace std;
int n,b[1000005];
long long ans;
void dfs(int a[],int q,int p){
sort(a+1,a+1+n);
for (int i = 1; i <= n; i++) cout << a[i] << " ";
cout < "\n\n";
if (a[n] == 0) {
ans ++;
return;
}
a[q] = p;
sort(a+1,a+1+n);
for (int i = 1; i <= n; i++){
if (a[i] ==0 )continue;
if (a[i] == 1){
dfs(a,i,0);
}
else if (i>1&&a[i]-a[i-1] == 1&& a[i-1]-a[i-2]!=1){
dfs(a,i,a[i-1]-1);
}else if (i>=1&&a[i]-a[i-1] != 1){
dfs(a,i,a[i]-1);
}
}
}
int main(){
cin >> n;
cout << n << "\n";
for (int i = 1; i <= n; i++) cin >> b[i];
sort(b+1,b+1+n);
dfs(b,0,0);
cout <<ans;
}
输入
3 1 2 3