input
2
2030
1
output
2
4 21 22 23 24
3 25 26 27
1
1 1
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#define maxn 100000007
using namespace std;
long long n;
long long a[maxn];
int mins, maxs;
int main()
{
a[0] = 0;
for (int i = 1; i < maxn; i++) a[i] = a[i - 1] + (long long )i * (long long )i;
int t;
scanf("%d", &t);
while (t--)
{
scanf("%I64d", &n);
if (n == 1) printf("1 1\n");
else {
for (int i = 1; i < maxn; i++) if (a[i] > n) {maxs = i;break;}
mins = 1;
while ((long long)maxs * (long long)maxs <= n){
if (a[maxs] - a[mins] > n) mins ++;
if (a[maxs] - a[mins] < n) maxs ++;
if (a[maxs] - a[mins] == n){
printf("%d", maxs - mins);
for (int i = mins +1; i <= maxs; i++) printf(" %d", i);
printf("\n");
mins++;
maxs++;
}
}
}
}
// int t;
// scanf("%d", &t);
// while (t--){
// scanf("%I64d", &n);
// long long a, b;
// if (n == 1) printf("1 1\n");
// else {
// for (int i = 1; i < maxn; i++){
// b = (long long)i * ((long long)i + 1) * (2*(long long)i + 1) / 6;
// if (b > n) {
// maxs = i;
// break;
// }
// }
// mins = 1;
// while ((long long)maxs * (long long)maxs <= n){
// a = (long long)mins * ((long long)mins + 1) * (2*(long long)mins + 1) / 6;
// b = (long long)maxs * ((long long)maxs + 1) * (2*(long long)maxs + 1) / 6;
// if ( b - a > n) mins ++;
// if ( b - a < n) maxs ++;
// if ( b - a == n){
// printf("%d", maxs - mins);
// for (int i = mins +1; i <= maxs; i++) printf(" %d", i);
// printf("\n");
// mins++;
// maxs++;
// }
// }
//
// }
// }
}