# L-24 MCS 507 Mon 17 Oct 2011 : enumpowers.py

# We enumerate exponents of all monomials in n variables
# of degree d in lexicographic order.

def enum(k,d,accu):
   """
   Enumerates all powers of degree d
   of as many variables as len(accu),
   with current index k.
   """
   if sum(accu) == d:
      print accu
   elif k < len(accu):
      for i in xrange(d,-1,-1):
         accu[k] = i
         enum(k+1,d,accu)

d = input('give degree : ')
n = input('give number of variables : ')
L = [0 for i in xrange(n)]
enum(0,d,L)
