#include "aplusb.h"
#include <bits/stdc++.h>
using namespace std;
std::vector<int> smallest_sums(int N, std::vector<int> A, std::vector<int> B) {
int pta = 1;
int ptb = 1;
int n = N;
vector <int> disA;
vector <int> disB;
disA.push_back(1e9);
for (int i=1; i<N; i++){
disA.push_back(A[i] - A[i-1]);
}
//for (auto ii : disA)cout << ii << " ";cout << "\n";
disB.push_back(1e9);
for (int i=1; i<N; i++){
disB.push_back(B[i] - B[i-1]);
}
//for (auto ii : disB)cout << ii << " ";cout << "\n";
while(pta < n && ptb < n && pta * ptb < n){
if(disA[pta] > disB[ptb]){
disB[ptb+1] += disB[ptb];
ptb++;
}else if(disA[pta] < disB[ptb]){
disA[pta+1] += disA[pta];
pta++;
}else{
ptb++;
pta++;
}
}
while(pta * ptb < n && pta < n){
pta++;
}
while(pta * ptb < n && ptb < n){
ptb++;
}
cout << pta << " " << ptb << "\n";
vector <int> ann;
for (int i=0; i<pta; i++){
for (int j=0; j<ptb; j++){
ann.push_back(A[i] + B[j]);
}
}
sort(ann.begin(),ann.end());
vector <int> ans;
for (int i=0; i<ann.size() && i < N; i++){
ans.push_back(ann[i]);
}
return ans;
}