def schur(n, lam):
R = PolynomialRing(ZZ, ['x%d' % (i+1) for i in range(n)])
h = lambda d: (R.one() if d == 0 else R.zero() if d < 0 else
sum(prod(c) for c in
Combinations(list(R.gens())*d, d).list()))
f = SymmetricFunctions(QQ).s()[lam]
return R(f.expand(n, alphabet=[str(g) for g in R.gens()]))
schur(4, [3, 2]) # a partition of 5, past this table