diff --git a/game.py b/game.py
index d2242ff7afc6407d610dc6d8d61b48362eecadd3..a91475ce1d437e5dd73f251466b06efd621b5661 100644
--- a/game.py
+++ b/game.py
@@ -1,11 +1,8 @@
-import matplotlib.pyplot as plt
-from matplotlib import cm
-from mpl_toolkits.mplot3d import Axes3D
 import numpy as np
-import utilis, agent, graph
+import agent, graph
 
 
-class game:
+class Game:
     def __init__(self, N=100, R=1, K=99, P=0, Actions=[0, 0.2, 0.4, 0.6, 0.8], I=1000, RF=0, alpha=1, epsilon=0.1,
                  multiArm='greedy', threshold=0.8):
         # datamap = utilis.read()
@@ -130,241 +127,3 @@ class game:
 
         return results
 
-
-def stackPlot(data, r, Actions, Iterations, titleComment=""):
-    A = len(Actions)
-    x = range(Iterations)
-    y = np.zeros((Iterations, A))
-    for i in range(Iterations):
-        y[i] = data[i][r]
-    y = np.vstack(y.T)
-
-    fig, ax = plt.subplots()
-    # grays = np.arange(0, 1, (max(Actions) - min(Actions))/A)
-    ax.stackplot(x, y, labels=Actions, colors=[str(0.9 - 0.9 * x) for x in Actions])
-    ax.legend(loc='best')
-    plt.ylabel('Number of Actions')
-    plt.xlabel('Time(iterations)')
-
-    title = 'Average Number of Actions in Round ' + str(r + 1)
-    if titleComment:
-        title += "\n" + titleComment
-
-    plt.title(title)
-
-    plt.savefig(titleComment + " in round " + str(r+1) + ".png")
-
-    plt.show()
-
-
-# def rep(repeat, N=100, R=1, K=99, P=0, Actions=[0, 0.2, 0.4, 0.6, 0.8], I=1000, RF=0, alpha=1, epsilon=0.1, multiArm='greedy'):
-
-def rep(repeat=30, R=1, Actions=[0, 0.2, 0.4, 0.6, 0.8], I=1000, **kwargs):
-    data = np.zeros((I, R, len(Actions)))
-    Actions.sort()
-    for re in range(repeat):
-        print("REP", re)
-        g = game(R=R, Actions=Actions, I=I, **kwargs)
-        result = g.play()
-        data += result
-    data /= repeat
-    return data
-
-
-def averageOfLast(data, Actions, N=100, r=0, lastIterations=100):
-    sum = 0
-    action_counter = {action: 0 for action in Actions}
-
-    for i in range(-1, -lastIterations - 1, -1):
-        sum += np.sum(data[i, r] * Actions)
-        for a in range(len(Actions)):
-            action_counter[Actions[a]] += data[i, r, a] / lastIterations
-    return (sum / (lastIterations * N), action_counter)
-
-
-def graph_kp3d(Actions, Klist=[2, 4, 8, 10], Plist=[0, 0.3, 0.6, 0.9], repeat=30, N=100):
-    K = Klist
-    P = Plist
-
-    meanA = np.zeros((len(K), len(P)))
-
-    for k in range(len(K)):
-        for p in range(len(P)):
-            data = rep(repeat, K=K[k], P=P[p], Actions=Actions)  # Specify other params by adding here
-            meanA[k][p] = averageOfLast(data, Actions, lastIterations=100, N=N)[0]  # Doing the first round only -- for now
-            print("k, p, mean", k, p, meanA[k][p])
-
-    P, K = np.meshgrid(P, K)
-
-    fig = plt.figure()
-    ax = fig.gca(projection='3d')
-
-    surf = ax.plot_surface(P, K, meanA, cmap=cm.coolwarm,
-                           linewidth=0, antialiased=False)
-
-    fig.colorbar(surf, shrink=0.5, aspect=5)
-    plt.show()
-
-def graph3d_alpha_threshold(Actions, repeat=30, AlphaList=np.arange(0, 1.01, 0.05), ThreshList=np.arange(0.1, 1.1, 0.1), N=100, **kwargs):
-
-    mean = np.zeros((len(ThreshList), len(AlphaList)))
-    ratio_by_threshold = np.zeros((len(ThreshList), len(AlphaList)))
-
-    for t in range(len(ThreshList)):
-        for a in range(len(AlphaList)):
-            print("Calculating... t, alpha = ", t, a)
-            data = rep(repeat=repeat, Actions=Actions, alpha=AlphaList[a], threshold=ThreshList[t], **kwargs)
-            mean[t][a] = averageOfLast(data, Actions, lastIterations=100, N=N)[0]
-        ratio_by_threshold[t] = mean[t] / ThreshList[t]
-
-
-    A, T = np.meshgrid(AlphaList, ThreshList)
-
-    fig = plt.figure()
-    ax = fig.gca(projection='3d')
-
-    surf = ax.plot_surface(A, T, mean, cmap=cm.Greys,
-                           linewidth=0, antialiased=False)
-    ax.set_xlabel('Alpha')
-    # ax.invert_xaxis()
-    ax.set_ylabel('Threshold')
-    ax.set_zlabel('Average contribution')
-    fig.colorbar(surf, shrink=0.5, aspect=5)
-    # plt.show()
-
-
-    fig2 = plt.figure()
-    ax2 = fig2.gca(projection='3d')
-    surf2 = ax2.plot_surface(A, T, ratio_by_threshold, cmap=cm.Greys,
-                           linewidth=0, antialiased=False)
-    ax2.set_xlabel('Alpha')
-    # ax.invert_xaxis()
-    ax2.set_ylabel('Threshold')
-    # ax.invert_yaxis()
-    ax2.set_zlabel('Average contribution by threshold')
-    fig2.colorbar(surf2, shrink=0.5, aspect=5)
-    plt.show()
-
-
-# def hist2d_alpha_threshold(Actions, repeat=30, AlphaList=np.arange(0, 1.1, 0.1), ThreshList=np.arange(0, 1.1, 0.2), **kwargs):
-
-
-
-
-def stackBar(r, Actions, repeat=30, multiArm='greedy', **kwargs):  # Plotting the data for round r
-
-    # if len(kwargs) != 1:
-    #     print("ERROR, Stack Bar Graph Expects 1 List, gets:", len(kwargs))
-    # key, alist = list(kwargs.items())[0]
-
-    key = -1
-    alist = []
-    for k, v in kwargs.items():
-        if isinstance(v, list):
-            if key == -1:
-                key = k
-                alist = v
-            else:
-                print("ERROR, Stack Bar Graph Expects Only 1 List to Compare")
-                exit(4)
-    del kwargs[key]
-
-    print("Comparing:", key)
-    print("On:", alist)
-
-    A = len(Actions)
-    p = []
-    count = np.zeros((A, len(alist)))  # of each action in each iter
-    ind = np.arange(len(alist))
-    width = 0.3
-
-    for al in range(len(alist)):
-        newKwargs = {**{key: alist[al]}, **kwargs}
-        if key == 'N':
-            newKwargs['K'] = alist[al] - 1
-        elif 'N' not in newKwargs.keys():
-            newKwargs['N'] = 100  # default value
-        data = rep(repeat, Actions=Actions, multiArm=multiArm, **newKwargs) / newKwargs['N'] * 100
-        action_counter = averageOfLast(data, Actions, r, 100)[1]
-        for a in range(A):
-            count[a, al] = action_counter[Actions[a]]
-    base = 0
-
-    for a in range(A):
-        p.append(plt.bar(ind, count[a], width, bottom=base, color=str(0.9 - 0.9 * Actions[a])))
-        base += count[a]
-
-    plt.ylabel('Percentage of Actions')
-    if key == 'epsilon':
-        plt.xlabel(key + ' (' + multiArm + ')')
-    else:
-        plt.xlabel(key)
-    plt.title('Average Number of Actions in Round ' + str(r + 1))
-    plt.xticks(ind, alist)
-    plt.yticks(np.arange(0, 101, 10))
-    plt.legend(tuple([p[x][0] for x in range(A)][::-1]), tuple(Actions[::-1]), loc='best')
-    plt.show()
-
-
-def main():
-    # Read-in or Define Parameters
-
-    N = 100
-    R = 2
-    K = 99
-    P = 0
-    I = 1000
-    RF = 0
-    alpha = 1
-    Actions = [0, 0.2, 0.4, 0.6, 0.8]
-
-    """
-    Graph1: Number of Actions of Round r (start by 0) by Iteration
-    """
-
-    # RepeatTimes = 30
-    # for N in [5, 10, 20, 50, 100]:
-    #     K = N - 1
-    #     for R in [1, 2, 4]:
-    #         for alpha in [0.2, 0.4, 0.6, 0.8, 1]:
-    #             data = rep(RepeatTimes, R, Actions, I, N=N, K=K, alpha=alpha)
-    #             for r in range(R):
-    #                 stackPlot(data, r, Actions, I, titleComment="N="+ str(N) + ", R=" + str(R) + ", alpha=" +str(alpha) + ", Well-Mixed graph")
-
-
-    # for k in [2, 4, 10, 40, 90, 99]:
-    #     data = rep(repeat=30, N=100, K=k, Actions=Actions, R=1, I=I, P=P)
-    #     stackPlot(data, r=0, Iterations=I, Actions=Actions, titleComment=("K=" + str(k) + ", P=" + str(P)))
-
-
-    # data = rep(repeat=30, Actions=Actions, R=1, I=I, RF=2, threshold=0.3)
-    # stackPlot(data, r=0, Iterations=I, Actions=Actions, titleComment="threshold = 0.3")
-
-
-    """
-    Graph2: Average contribution by K, P
-    """
-
-    # graph_kp3d(Actions)
-
-    """
-    Graph3: Comparing a parameter (put in a list)
-    """
-    # stackBar(0, Actions, repeat=1, alpha=[0, 0.2, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1])
-    # stackBar(0, Actions, repeat=30, N=[5, 10, 20, 50, 100], threshold=0.6, RF=2)
-    # stackBar(0, Actions, repeat=1, RF=2, threshold=[0.2, 0.4, 0.6, 0.8, 1])
-
-    """
-    Graph4: Actions by different epsilon method + value
-    """
-    # stackBar(0, Actions, repeat=1, multiArm='greedy', epsilon=[0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
-    # stackBar(0, Actions, repeat=30, multiArm='decrease', epsilon=[0.8, 0.9, 0.95, 0.98, 0.99, 0.999, 0.9999])
-
-    """
-    Graph4: Average contribution by Alpha and Threshold
-    """
-
-    graph3d_alpha_threshold(Actions, repeat=30, RF=2)
-
-if __name__ == '__main__':
-    main()
\ No newline at end of file
diff --git a/main.py b/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..e0e9f7210d52be77fafa1e8ad8907d266acaaea1
--- /dev/null
+++ b/main.py
@@ -0,0 +1,317 @@
+import matplotlib.pyplot as plt
+from matplotlib import cm
+from mpl_toolkits.mplot3d import Axes3D
+import numpy as np
+import scipy
+from scipy import stats
+import game
+
+
+def stackPlot(data, r, Actions, Iterations, titleComment=""):
+    A = len(Actions)
+    x = range(Iterations)
+    y = np.zeros((Iterations, A))
+    for i in range(Iterations):
+        y[i] = data[i][r]
+    y = np.vstack(y.T)
+
+    fig, ax = plt.subplots()
+    ax.stackplot(x, y, labels=Actions, colors=[str(0.9 - 0.9 * x) for x in Actions])
+    ax.legend(loc='best')
+    plt.ylabel('Number of Actions')
+    plt.xlabel('Time(iterations)')
+
+    title = 'Average Number of Actions in Round ' + str(r + 1)
+    if titleComment:
+        title += "\n" + titleComment
+
+    plt.title(title)
+
+    # plt.savefig(titleComment + " in round " + str(r+1) + ".png")
+
+    plt.show()
+
+
+def rep(repeat=30, R=1, Actions=[0, 0.2, 0.4, 0.6, 0.8], I=1000, **kwargs):
+    data = np.zeros((I, R, len(Actions)))
+    Actions.sort()
+    for re in range(repeat):
+        print("REP", re)
+        g = game.Game(R=R, Actions=Actions, I=I, **kwargs)
+        result = g.play()
+        data += result
+    data /= repeat
+    return data
+
+
+def averageOfLast(data, Actions, N=100, r=0, lastIterations=100):
+    sum = 0
+    action_counter = {action: 0 for action in Actions}
+
+    for i in range(-1, -lastIterations - 1, -1):
+        sum += np.sum(data[i, r] * Actions)
+        for a in range(len(Actions)):
+            action_counter[Actions[a]] += data[i, r, a] / lastIterations
+    return (sum / (lastIterations * N), action_counter)
+
+
+def graph_kp3d(Actions, Klist=[2, 4, 8, 10], Plist=[0, 0.3, 0.6, 0.9], repeat=30, N=100):
+    K = Klist
+    P = Plist
+
+    meanA = np.zeros((len(K), len(P)))
+
+    for k in range(len(K)):
+        for p in range(len(P)):
+            data = rep(repeat, K=K[k], P=P[p], Actions=Actions)  # Specify other params by adding here
+            meanA[k][p] = averageOfLast(data, Actions, lastIterations=100, N=N)[0]  # Doing the first round only -- for now
+            print("k, p, mean", k, p, meanA[k][p])
+
+    P, K = np.meshgrid(P, K)
+
+    fig = plt.figure()
+    ax = fig.gca(projection='3d')
+
+    surf = ax.plot_surface(P, K, meanA, cmap=cm.coolwarm,
+                           linewidth=0, antialiased=False)
+
+    fig.colorbar(surf, shrink=0.5, aspect=5)
+    plt.show()
+
+
+def graph3d_alpha_threshold(Actions, repeat=30, AlphaList=np.arange(0, 1.01, 0.05), ThreshList=np.arange(0.1, 1.1, 0.1), N=100, **kwargs):
+
+    mean = np.zeros((len(ThreshList), len(AlphaList)))
+    ratio_by_threshold = np.zeros((len(ThreshList), len(AlphaList)))
+
+    for t in range(len(ThreshList)):
+        for a in range(len(AlphaList)):
+            print("Calculating... t, alpha = ", t, a)
+            data = rep(repeat=repeat, Actions=Actions, alpha=AlphaList[a], threshold=ThreshList[t], **kwargs)
+            mean[t][a] = averageOfLast(data, Actions, lastIterations=100, N=N)[0]
+        ratio_by_threshold[t] = mean[t] / ThreshList[t]
+
+
+    A, T = np.meshgrid(AlphaList, ThreshList)
+
+    fig = plt.figure()
+    ax = fig.gca(projection='3d')
+
+    surf = ax.plot_surface(A, T, mean, cmap=cm.Greys,
+                           linewidth=0, antialiased=False)
+    ax.set_xlabel('Alpha')
+    # ax.invert_xaxis()
+    ax.set_ylabel('Threshold')
+    ax.set_zlabel('Average contribution')
+    fig.colorbar(surf, shrink=0.5, aspect=5)
+    # plt.show()
+
+
+    fig2 = plt.figure()
+    ax2 = fig2.gca(projection='3d')
+    surf2 = ax2.plot_surface(A, T, ratio_by_threshold, cmap=cm.Greys,
+                           linewidth=0, antialiased=False)
+    ax2.set_xlabel('Alpha')
+    # ax.invert_xaxis()
+    ax2.set_ylabel('Threshold')
+    # ax.invert_yaxis()
+    ax2.set_zlabel('Average contribution by threshold')
+    fig2.colorbar(surf2, shrink=0.5, aspect=5)
+    plt.show()
+
+
+def stackBar(r, Actions, repeat=30, multiArm='greedy', **kwargs):  # Plotting the data for round r
+
+    # if len(kwargs) != 1:
+    #     print("ERROR, Stack Bar Graph Expects 1 List, gets:", len(kwargs))
+    # key, alist = list(kwargs.items())[0]
+
+    key = -1
+    alist = []
+    for k, v in kwargs.items():
+        if isinstance(v, list):
+            if key == -1:
+                key = k
+                alist = v
+            else:
+                print("ERROR, Stack Bar Graph Expects Only 1 List to Compare")
+                exit(4)
+    del kwargs[key]
+
+    print("Comparing:", key)
+    print("On:", alist)
+
+    A = len(Actions)
+    p = []
+    count = np.zeros((A, len(alist)))  # of each action in each iter
+    ind = np.arange(len(alist))
+    width = 0.3
+
+    for al in range(len(alist)):
+        newKwargs = {**{key: alist[al]}, **kwargs}
+        if key == 'N':
+            newKwargs['K'] = alist[al] - 1
+        elif 'N' not in newKwargs.keys():
+            newKwargs['N'] = 100  # default value
+        data = rep(repeat, Actions=Actions, multiArm=multiArm, **newKwargs) / newKwargs['N'] * 100
+        action_counter = averageOfLast(data, Actions, r=r, lastIterations=100)[1]
+        for a in range(A):
+            count[a, al] = action_counter[Actions[a]]
+    base = 0
+
+    for a in range(A):
+        p.append(plt.bar(ind, count[a], width, bottom=base, color=str(0.9 - 0.9 * Actions[a])))
+        base += count[a]
+
+    plt.ylabel('Percentage of Actions')
+    if key == 'epsilon':
+        plt.xlabel(key + ' (' + multiArm + ')')
+    else:
+        plt.xlabel(key)
+    plt.title('Average Number of Actions in Round ' + str(r + 1))
+    plt.xticks(ind, alist)
+    plt.yticks(np.arange(0, 101, 10))
+    plt.legend(tuple([p[x][0] for x in range(A)][::-1]), tuple(Actions[::-1]), loc='best')
+    plt.show()
+
+
+def t_test(repeat, Actions, r=0, R=1, I=1000, lastIterations=100, N=100, byThreshold=False, **kwargs):
+    key = -1
+    atuple = ()
+    for k, v in kwargs.items():
+        if isinstance(v, tuple):
+            if key == -1:
+                key = k
+                atuple = v
+            else:
+                print("ERROR, T-Test Expects Only 1 Tuple to Compare")
+                exit(5)
+    del kwargs[key]
+
+    samples = np.zeros((2, repeat))
+
+    for s in (0, 1):
+        newArgs = {**{key: atuple[s]}, **kwargs}
+        # for re in range(repeat):
+        #     # print("T-Test REP", re)
+        #     g = game.Game(R=R, Actions=Actions, I=I, N=N, **newArgs)
+        #     result = g.play()
+        #     samples[s, re] = averageOfLast(result, Actions, N, r, lastIterations)[0]
+        samples[s] = repHist(repeat, Actions, R, r, I, lastIterations, N, **newArgs)
+        if byThreshold:
+            samples[s] /= newArgs["threshold"]
+        print("Sample", s, samples[s])
+
+    print(stats.ttest_ind(samples[0], samples[1]))
+
+
+def repHist(repeat, Actions, R=1, r=0, I=1000, lastIterations=100, N=100, **kwargs):
+    hist = np.zeros(repeat)
+    for re in range(repeat):
+        print("HistREP", re)
+        g = game.Game(R=R, Actions=Actions, I=I, N=N, **kwargs)
+        result = g.play()
+        hist[re] = averageOfLast(result, Actions, N, r, lastIterations)[0]
+    return hist
+
+
+
+
+def main():
+    # Read-in or Define Parameters
+
+    N = 100
+    R = 1
+    K = 99
+    P = 0
+    I = 1000
+    RF = 0
+    alpha = 1
+    Actions = [0, 0.2, 0.4, 0.6, 0.8]
+
+    """
+    Graph1: Number of Actions of Round r (start by 0) by Iteration
+    """
+
+    # RepeatTimes = 30
+    # for N in [5, 10, 20, 50, 100]:
+    #     K = N - 1
+    #     for R in [1, 2, 4]:
+    #         for alpha in [0.2, 0.4, 0.6, 0.8, 1]:
+    #             data = rep(RepeatTimes, R, Actions, I, N=N, K=K, alpha=alpha)
+    #             for r in range(R):
+    #                 stackPlot(data, r, Actions, I, titleComment="N="+ str(N) + ", R=" + str(R) + ", alpha=" +str(alpha) + ", Well-Mixed graph")
+
+
+    # for k in [2, 99]:
+    #     for p in [0.8]:
+    #         data = rep(repeat=30, N=100, K=k, Actions=Actions, R=1, I=I, P=p)
+    #         stackPlot(data, r=0, Iterations=I, Actions=Actions, titleComment=("K=" + str(k) + ", P=" + str(p)))
+
+
+    # data = rep(repeat=30, Actions=Actions, R=1, I=I, RF=2, threshold=0.3)
+    # stackPlot(data, r=0, Iterations=I, Actions=Actions, titleComment="threshold = 0.3")
+
+
+    """
+    Graph2: Average contribution by K, P
+    """
+
+    # graph_kp3d(Actions)
+
+    """
+    Graph3: Comparing a parameter (put in a list)
+    """
+    # stackBar(0, Actions, repeat=1, alpha=[0, 0.2, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1])
+    # stackBar(0, Actions, repeat=1, N=[5, 10, 20, 50, 100], threshold=0.6, RF=2)
+    # stackBar(0, Actions, repeat=1, RF=2, threshold=[0.2, 0.4, 0.6, 0.8, 1])
+
+    """
+    Graph4: Actions by different epsilon method + value
+    """
+    # stackBar(0, Actions, repeat=1, multiArm='greedy', epsilon=[0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
+    # stackBar(0, Actions, repeat=1, multiArm='decrease', epsilon=[0.8, 0.9, 0.95, 0.98, 0.99, 0.999, 0.9999])
+
+    """
+    Graph5: Average contribution by Alpha and Threshold
+    """
+
+    # graph3d_alpha_threshold(Actions, repeat=1, RF=2)
+
+    """
+    T-Test
+    """
+
+    # t_test(30, Actions, alpha=1, RF=2, threshold=(0.2, 0.3), byThreshold=True)   #p=3.324e-31
+    # t_test(30, Actions, alpha=1, RF=2, threshold=(0.6, 1.0))    #pvalue=0.2208
+    # t_test(30, Actions, alpha=1, RF=2, threshold=(0.8, 1.0))    #pvalue=0.1096
+    # t_test(30, Actions, alpha=1, RF=2, threshold=(0.5, 1.0))    #pvalue=2.2067e-08
+    # t_test(30, Actions, alpha=0.85, RF=2, threshold=(0.2, 0.3), byThreshold=True)   #pvalue=0.005865
+
+    # t_test(30, Actions, alpha=(1, 0.9), RF=2, threshold=0.2)    #pvalue=0.3748
+    # t_test(30, Actions, alpha=(1, 0.85), RF=2, threshold=0.2)   #pvalue=0.001466
+    # t_test(30, Actions, alpha=(1, 0.8), RF=2, threshold=0.2)    #pvalue=0.0002030
+    # t_test(30, Actions, alpha=(1, 0.75), RF=2, threshold=0.2)   #pvalue=3.9617e-07
+    # t_test(30, Actions, alpha=(1, 0.7), RF=2, threshold=0.2)    #pvalue=2.2428e-09
+    # t_test(30, Actions, alpha=(1, 0.65), RF=2, threshold=0.2)   #pvalue=6.8966e-09
+    # t_test(30, Actions, alpha=(1, 0.6), RF=2, threshold=0.2)    #pvalue=7.1621e-15
+    # t_test(30, Actions, alpha=(1, 0.5), RF=2, threshold=0.2)    #pvalue=4.1760e-13
+    # t_test(30, Actions, alpha=(1, 0.45), RF=2, threshold=0.2)   #pvalue=1.3749e-11
+    # t_test(30, Actions, alpha=(1, 0.4), RF=2, threshold=0.2)    #pvalue=3.8352e-19
+
+    """T-TEST GRAPH"""
+
+    # t_test(30, Actions, K=(2, 99), P=0)    #pvalue=0.4278
+    # t_test(30, Actions, K=(2, 99), P=0.9)  #pvalue=0.4541
+    # t_test(100, Actions, K=(2, 99), P=0.8) #pvalue=0.01502  ***
+    # t_test(30, Actions, K=(2, 99), P=0.85) #pvalue=0.1931
+    # t_test(30, Actions, K=(2, 99), P=0.75) #pvalue=0.5630
+    # t_test(30, Actions, K=2, P=(0, 0.9))   #pvalue=0.9806
+    # t_test(30, Actions, K=2, P=(0, 0.8))   #pvalue=0.4523
+    # t_test(30, Actions, K=(2, 99), P=0.9)  #pvalue=0.4541
+    # t_test(30, Actions, K=(2, 99), P=0.7)  #pvalue=0.3698
+
+
+
+if __name__ == '__main__':
+    main()
\ No newline at end of file