function getCombination<T>(array: T[], num: number):T[][] {
if (num < 1) return [];
if (num === 1) return array.map((item) => [item]);
return flatten(array.map((head, i) => {
return getCombination(array.slice(i + 1), num - 1).map((subArray) => [head].concat(subArray));
}));
}