import random

X = [] 
Y = []
Z = []
n=3
target = 24;
size = 2;
partitions = [];

def partition(sum, largestNumber, way):
	#print way
#	print "%d\t%d\t" %(sum, largestNumber)
	way.append(largestNumber);
	depth = len(way)
	if (largestNumber ==0):
		return;
	if (sum==0):
		if (depth == size*3):
			partitions.append(way)
			return;	
	if (sum < 0):
		return;
	if(depth >=size*3):
		return;
	way1= [];
	way2=way[:];
	partition(sum, largestNumber -1, way1);
	partition(sum - largestNumber,largestNumber, way2);
	

def main():
	way=[]
	print target
	partition(target, target, way);

def oldmain():
	#add random values
	for x in range(n):
		X.append(random.randint(1,24))
		Y.append(random.randint(1,24))
	remaining = 36 - sum(X)/len(X) - sum(Y)/len(Y)
	if (remaining < 0):
		return;
	#want Z to average to remaining
	for x in range(n-1):
		Z.append(random.randint(1,remaining/2))	
	Z.append(remaining*n - sum(Z))
	print X
	print Y
	print remaining
	print Z
	print 3/4
	avg = (sum(X) + sum(Y) + sum(Z))/n
	print avg

if __name__ == "__main__":
	main();
