#include<stdio.h>
#include<stdlib.h>
int w[10],x[10],d,n,i,sum=0;
int main()
{
printf("Enter the number of elements\n");
scanf("%d",&n);
printf("Enter elements in increasing order\n");
for(i=1;i<=n;i++)
{
scanf("%d",&w[i]);
sum=sum+w[i];
}
printf("Enter the value of d\n");
scanf("%d",&d);
if(sum<=d||w[i]>d)
{
printf("No Solution");
exit(0);
}
sum_subset(0,1,sum);
}
void sum_subset(int s,int k,int r)
{
x[k]=1;
if(s+w[k]==d)
{
printf("\nSubset\t");
for(i=1;i<=k;i++)
{
if(x[i]==1)
{
printf("%d\t",w[i]);
}
}
}
else if(s+w[k]+w[k+1]<=d)
{
sum_subset(s+w[k],k+1,r-w[k]);
}
if((s+r-w[k]>=d)&&(s+w[k+1]<=d))
{
x[k]=0;
sum_subset(s,k+1,r-w[k]);
}
}