text: import sys
  import os
  import copy
  sys.path.append("../")
  from optimization import finding_F
  
  def paper_hook(m, gamma, k, L) :
  	t = {}
  
  	#example-4
  
  	minF = -1
  
  	kappa = k + 1
  
  	for i1 in range(0, kappa) :
  		if t == {} :
  			t[0] = {-1 : {-1 : {"v": i1}}}
  		else :
  			t[0][-1][-1]["v"] = i1
  
  		for i2 in range(0, i1+1) :
  			if not 1 in t[0] :
  				t[0][1] = {-1 : {"v": i2}}
  			else :
  				t[0][1][-1]["v"] = i2
  
  			for i3 in range(t[0][1][-1]["v"], kappa - t[0][-1][-1]["v"] + t[0][1][-1]["v"]) :
  				if not 1 in t :
  					t[1] = {-1 : {-1 : {"v": i3}}}
  				else :
  					t[1][-1][-1]["v"] = i3
  
  				for i4 in range(0, t[0][1][-1]["v"] + 1) :
  					if not 2 in t[0][1] :
  						t[0][1][2] = {"v": i4}
  					else :
  						t[0][1][2]["v"] = i4
  
  					for i5 in range(t[0][1][2]["v"], 1 + t[0][-1][-1]["v"] - t[0][1][-1]["v"] + t[0][1][2]["v"]) :
  						if not 2 in t[0] :
  							t[0][2] = {-1: {"v" : i5}} 
  						else :
  							t[0][2][-1]["v"] = i5
  
  						for i7 in range(t[0][1][2]["v"], 1 + t[1][-1][-1]["v"] - t[0][1][-1]["v"] + t[0][1][2]["v"]) :
  
  							if not 2 in t[1] :
  								t[1][2] = {-1: {"v" : i7}} 
  							else :
  								t[1][2][-1]["v"] = i7
  
  
  							for i6 in range(t[0][2][-1]["v"] + t[1][2][-1]["v"] - t[0][1][2]["v"],\
  												kappa - t[0][-1][-1]["v"] - t[1][-1][-1]["v"] + t[0][1][-1]["v"] +\
  												 t[0][2][-1]["v"] + t[1][2][-1]["v"] - t[0][1][2]["v"]) :
  
  								if not 2 in t :
  									t[2] = {-1: {-1: {"v": i6}}}
  								else :
  									t[2][-1][-1]["v"] = i6
  
  								trigger_all(t, k) #trigrt completion of the rest of the set
  								tempF = finding_F(t, m, L, gamma) #check
  
  								if minF == -1 :
  									minF = tempF
  									finalT = copy.deepcopy(t)
  								elif tempF < minF :
  									minF = tempF
  									finalT = copy.deepcopy(t)
  
  
  	return finalT
  
  def trigger_all(t, k):
  	if not 3 in t :
  		t[3] = {-1: {-1: {"v": k - t[0][-1][-1]["v"]}}}
  	else :
  		t[3][-1][-1]["v"] = k - t[0][-1][-1]["v"]
  
  	
  	if not 4 in t :			
  		t[4] = {-1: {-1: {"v": k - t[1][-1][-1]["v"]}}}
  	else :
  		t[4][-1][-1]["v"] = k - t[1][-1][-1]["v"]
  
  	if not 5 in t :
  		t[5] = {-1: {-1: {"v": k - t[2][-1][-1]["v"]}}}
  	else :
  		t[5][-1][-1]["v"] = k - t[2][-1][-1]["v"]
  
  
  	if not 4 in t[3] :
  		t[3][4] = {-1: {"v": k - t[0][-1][-1]["v"] - t[1][-1][-1]["v"] + t[0][1][-1]["v"]}}
  	else :
  		t[3][4][-1]["v"] = k - t[0][-1][-1]["v"] - t[1][-1][-1]["v"] + t[0][1][-1]["v"]
  
  	if not 5 in t[3] :
  		t[3][5] = {-1: {"v": k - t[0][-1][-1]["v"] - t[2][-1][-1]["v"] + t[0][2][-1]["v"]}}
  	else :
  		t[3][5][-1]["v"] = k - t[0][-1][-1]["v"] - t[2][-1][-1]["v"] + t[0][2][-1]["v"]
  
  	if not 5  in t[4] :
  		t[4][5] = {-1: {"v": k - t[1][-1][-1]["v"] - t[2][-1][-1]["v"] + t[1][2][-1]["v"]}}
  	else :
  		t[4][5][-1]["v"] = k - t[1][-1][-1]["v"] - t[2][-1][-1]["v"] + t[1][2][-1]["v"]
  
  
  	if not 4 in t[0] :
  		t[0][4] = {-1: {"v": t[0][-1][-1]["v"] - t[0][1][-1]["v"]}}
  	else :
  		t[0][4][-1]["v"] = t[0][-1][-1]["v"] - t[0][1][-1]["v"]
  
  	if not 5 in t[0] :
  		t[0][5] = {-1: {"v": t[0][-1][-1]["v"] - t[0][2][-1]["v"]}}
  	else :
  		t[0][5][-1]["v"] = t[0][-1][-1]["v"] - t[0][2][-1]["v"]
  
  	if not 3 in t[1] :
  		t[1][3] = {-1: {"v": t[1][-1][-1]["v"] - t[0][1][-1]["v"]}}
  	else :
  		t[1][3][-1]["v"] = t[1][-1][-1]["v"] - t[0][1][-1]["v"]
  
  	if not 5 in t[1] :
  		t[1][5] = {-1: {"v": t[1][-1][-1]["v"] - t[1][2][-1]["v"]}}
  	else :
  		t[1][5][-1]["v"] = t[1][-1][-1]["v"] - t[1][2][-1]["v"]
  
  
  	if not 3 in t[2] :
  		t[2][3] = {-1: {"v": t[2][-1][-1]["v"] - t[0][2][-1]["v"]}}
  	else :
  		t[2][3][-1]["v"] = t[2][-1][-1]["v"] - t[0][2][-1]["v"]
  
  	if not 4 in t[2] :
  		t[2][4] = {-1: {"v": t[2][-1][-1]["v"] - t[1][2][-1]["v"]}}
  	else :
  		t[2][4][-1]["v"] = t[2][-1][-1]["v"] - t[1][2][-1]["v"]
  
  
  	if not 5 in t[0][1] :
  		t[0][1][5] = {"v": t[0][1][-1]["v"] - t[0][1][2]["v"]}
  	else :
  		t[0][1][5]["v"] = t[0][1][-1]["v"] - t[0][1][2]["v"]
  
  	if not 4 in t[0][2] :
  		t[0][2][4] = {"v": t[0][2][-1]["v"] - t[0][1][2]["v"]}
  	else :
  		t[0][2][4]["v"] = t[0][2][-1]["v"] - t[0][1][2]["v"]
  
  	if not 5 in t[0][4] :
  		t[0][4][5] = {"v": t[0][-1][-1]["v"] - t[0][1][-1]["v"] - t[0][2][-1]["v"] + t[0][1][2]["v"]}
  	else :
  		t[0][4][5]["v"] = t[0][-1][-1]["v"] - t[0][1][-1]["v"] - t[0][2][-1]["v"] + t[0][1][2]["v"]
  
  
  	if not 3 in t[1][2] :
  		t[1][2][3] = {"v": t[1][2][-1]["v"] - t[0][1][2]["v"]}
  	else :
  		t[1][2][3]["v"] = t[1][2][-1]["v"] - t[0][1][2]["v"]
  
  	# if not 5 in t[0][4] :
  	# 	t[0][4][5] = {"v" : t[0][-1][-1]["v"] - t[0][1][-1]["v"] - t[0][2][-1]["v"] + t[0][1][2]["v"]}
  	# else :
  	# 	t[0][4][5]["v"] = t[0][-1][-1]["v"] - t[0][1][-1]["v"] - t[0][2][-1]["v"] + t[0][1][2]["v"]
  
  	if not 5 in t[1][3] :
  		t[1][3][5] = {"v" : t[1][-1][-1]["v"] - t[0][1][-1]["v"] - t[1][2][-1]["v"] + t[0][1][2]["v"]}
  	else :
  		t[1][3][5]["v"] = t[1][-1][-1]["v"] - t[0][1][-1]["v"] - t[1][2][-1]["v"] + t[0][1][2]["v"]
  
  	if not 4 in t[2][3] :
  		t[2][3][4] = {"v" : t[2][-1][-1]["v"] - t[0][2][-1]["v"] - t[1][2][-1]["v"] + t[0][1][2]["v"]}
  	else :
  		t[2][3][4]["v"] = t[2][-1][-1]["v"] - t[0][2][-1]["v"] - t[1][2][-1]["v"] + t[0][1][2]["v"]
  
  	if not 5 in t[3][4] :
  		t[3][4][5] = {"v": k - t[0][-1][-1]["v"] - t[1][-1][-1]["v"] - t[2][-1][-1]["v"]+\
  						+ t[0][1][-1]["v"] + t[0][2][-1]["v"] + t[1][2][-1]["v"] - t[0][1][2]["v"]}
  	else :
  		t[3][4][5]["v"] = k - t[0][-1][-1]["v"] - t[1][-1][-1]["v"] - t[2][-1][-1]["v"]+\
  						+ t[0][1][-1]["v"] + t[0][2][-1]["v"] + t[1][2][-1]["v"] - t[0][1][2]["v"]
  
  
  if __name__ == '__main__':
  	main()