Given 10 cards with (suit,rank)
find all possible arrangement of flush(cards same suit, #cards>=3) or straight(cards have consecutive rank, #cards>=3) for these 10 cards
#assume we have 10 cards c0,c1,c2,c3...c9, and ci=(some_suit,some_rank)
#one possible arrangement coule be [(c1,c2,c3),(c4,c6,c9)]
#another arrangemetn could be [(c2,c4,c6), (c3,c7,c9)]
#then result will be [ [(c1,c2,c3),(c4,c6,c9)], [(c2,c4,c6), (c3,c7,c9)] ]
#make sure flushes/straights in same arrangement are disjoint, you cannont use same card twice in one arrangement
#in one arrangement, you need to list all card combinations, like in first arrangement, you cannot just return [(c1,c2,c3)]
#cuz you can still find another flush/straight (c4,c6,c9), since remaining cards (c5,c7,c8) cannot form a flush/straight, you can add [(c1,c2,c3),(c4,c6,c9)] to result
#I used bitmask