数据不大,可以暴力
#include<bits/stdc++.h>
using namespace std;
int n;
bool judge(string s){
int ans=0;
int num=0;
char op='+';
for(int i=0;i<=s.length();i++) {
if(s[i]==' ') continue;
char c=s[i];
if(isdigit(c)) num=num*10+(c-'0');
else {
if(op=='+') ans+=num;
else if(op=='-') ans-=num;
op=c;
num=0;
}
}
return ans==0;
}
void dfs(int k,string s){
if(k==n){
s+=to_string(k);
if(judge(s)) cout<<s<<"\n";
}
else{
dfs(k+1,s+to_string(k)+" ");
dfs(k+1,s+to_string(k)+"+");
dfs(k+1,s+to_string(k)+"-");
}
}
int main(){
cin>>n;
dfs(1,"");
return 0;
}