class voter_distr:
    num_types = None
    num_distr = None

    def __init__(self, distr, types):
        self.num_types = types
        self.num_distr = distr

    def generate_tuples(self, num):
        all_tups = []
        for i in range(0, num+1):
            all_tups.append([i, num])
            i += 1
            num -= 1
        return all_tups

    def generate(self, distr, types):
        if types == 1:
            return [[distr]]
        #if types == 2:
            #print "2 types"
         #   tupset = self.generate_tuples(distr)
          #  return tupset
        else:
            if types > 1:
                #print "2+ types"
                set = []
                j = distr
                for i in range(0, distr+1):
                    #recursive call
                    dilist = self.generate(j, types-1)
                    for k in dilist:
                        set.append([i]+k)
                    j -= 1
                return set

