nCr (n,r) { res = 1; for i in 1 .. r { res *= n; n--; res /= i; } return res; }