#include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; using namespace std; #define mod 1000003 #define INF 1000000000 #define LLINF 2000000000000000000LL #define SIZE 100 #define EPS 1e-12 vector > half; vector > ANS; int cho[16]; int N,S,p[31]; void dfs1(int n,int s=0,int ch=0,int sump=0){ if(s==n){ half.push_back({sump,ch}); return; } dfs1(n,s+1,ch+(1<S) return; int l=0,r=(int)half.size()-1,mid; while(l=S-sump){ r = mid; }else{ l = mid+1; } } for(int i=l;;i++){ if(half[i].first+sump==S){ int CH = ch + half[i].second; vector ans; for(int j=0;j