text: from itertools import combinations
  
  def partitions(*args):
      def p(s, *args):
          if not args: return [[]]
          res = []
          for c in combinations(s, args[0]):
              s0 = [x for x in s if x not in c]
              for r in p(s0, *args[1:]):
                  res.append([c] + r)
          return res
      s = range(sum(args))
      return p(s, *args)
  
  print partitions(2, 0, 2)
  