!7 p-exp { S sentence = "Are atomic bombs powerful devices ?"; S pat = "Are ?"; L tokPat = javaTokWithAngularBracketsC(pat); L tokS = javaTokWithAngularBracketsC(sentence); printStruct(tokPat); printStruct(tokS); int extra = l(tokS)-l(tokPat); if (extra <= 0) ret with print("Not applicable"); L indices = indicesOfAngleBracketVars(tokPat); print(indices); new LL out; recurse(extra-l(indices), l(indices), new L, out); pnl(out); } svoid recurse(int remaining, int n, L collecting, LL out) { if (l(collecting) >= n) ret with out.add(cloneList(collecting)); for (int take = 0; take <= remaining; take++) { collecting.add(take); recurse(remaining-take, n, collecting, out); removeLast(collecting); } }