#include <cstdio> #include <string> #include <map> #include <vector> using namespace std; int N; char News[15][40]; int ans[20]; bool choosed[20] = {0}; int Input1(int &, int &); int Input2(); void Combination(int &Size, int Len, int pos); int main() { int Case; scanf("%d ", &Case); while (Case--) { int a = 0, b = 0; int Mode = Input1(a, b); N = Input2(); if (Mode == 1) b = a; else if (Mode == 3) a = 1, b = N; for (int i = a; i <= b; ++i) { printf("Size %d\n", i); Combination(i, 0, 0); putchar('\n'); } if (Case) putchar('\n'); } } int Input1(int &a, int &b) { char line[20]; int Mode = 1; gets(line); if (line[0] == '*') Mode = 3; else { int i = 0; while (line[i] != '\0' && line[i] != ' ') a = a * 10 + (line[i++] - '0'); if (line[i] == ' ') { Mode = 2, ++i; while (line[i]) b = b * 10 + (line[i++] - '0'); } } return Mode; } int Input2() { int n = 0; while (gets(News[n]) && News[n][0] != '\0') ++n; return n; } void Combination(int &Size, int Len, int pos) { if (Len == Size) { printf("%s", News[ans[0]]); for (int i = 1; i < Size; ++i) printf(", %s", News[ans[i]]); putchar('\n'); return; } for (int i = pos; i < N; ++i) { ans[Len] = i; Combination(Size, Len + 1, i + 1); } }