#include
#include
#include
using namespace std;
vector<vector> ans;
void allsubsets(int arr[], int n, vector v, int sum,int i,int temp)
{
if(temp == sum){
ans.push_back(v);
return;
}
if(i>=n){
return;
}
if(temp > sum){
return;
}
v.push_back(i);
allsubsets(arr,n,v,sum,i+1,temp + arr[i]);
v.pop_back();
allsubsets(arr,n,v,sum,i+1,temp);
}
void printsub(int arr[], int n, int sum)
{
vector v;
allsubsets(arr, n, v, sum,0,0);
}
void printit(vector<vector> ans,vector<vector> ans2,int i,int *arr){
if(i==ans.size()){
return;
}
for ( int k = 0; k < ans[i].size(); k++)
cout << arr[ans[i][k]] << " ";
cout << "and ";
for ( int k = 0; k < ans2[i].size(); k++)
cout << arr[ans2[i][k]] << " ";
cout << endl;
printit(ans,ans2,i+1,arr);
}
int main()
{
int n, k=0;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++)
{
cin >> arr[i];
k += arr[i];
}
printsub(arr, n, (k/2));
vector<vector<int>> ans2(ans.size());
reverse_copy(ans.begin(), ans.end(), ans2.begin());
printit(ans,ans2,0,arr);
if(ans.size()>0)
cout << ans.size() << endl;
else cout << "0" << endl;
return 0;
}