depth = 2				# How deep do we search?
sampleFactor = 0.4		# How many trials do we wanna do? (out of all)

import sys
import random

	
# f: reference to the network file
f = open(sys.argv[1])

# n: Number of Neurons
n = int(f.readline())

brain = []
notchecked = []
for i in range(n):
	brain.append([float(string) for string in f.readline()[:-1].split(" ")])
	notchecked.append(i)


def getSynergyOf(neuronNum, level=0):
		if level > depth:
			return 0
		else:
			value = 0
			connectedNeuronNumber = 0
			for connectedNeuronValue in brain[neuronNum]:
				if connectedNeuronValue != 0:
					value = value + connectedNeuronValue + connectedNeuronValue * getSynergyOf(connectedNeuronNumber, level+1)
				connectedNeuronNumber = connectedNeuronNumber + 1
			return value/n

results = []
#trials
for i in range(int(sampleFactor*n)):
	neuronNum = notchecked.pop(random.randint(0,len(notchecked) - 1))
	results.append(getSynergyOf(neuronNum)/(depth+1))
	
print "Synergy is: " + str((sum(results) / len(results)))
print results