import java.util.*;
import java.io.*;

public class AnalyseSmallWorld {

    private static double kappa(int n,int k,double p){
	double kappa = (k*(k-1)*Math.log(1.0/(1.0 - p)))/(2.0 *(logFactorial(n) - logFactorial(k) - logFactorial(n-k)));;
	return kappa;
    }

    private static double logFactorial(int n){
	double fac = 0;
	for (int a = 2; a <= n; a++)
	    fac += Math.log(a);
	return fac;
    }

    private static void show(long[]x){
	int n = x.length;
	for (int i=0;i<n;i++) System.out.print(x[i] + " ");
	System.out.println();
    }
    private static long average(long[]x){
	int n = x.length;
	long sum = 0;
	for (int i=0;i<n;i++) sum = sum + x[i];
	return sum/n;
    }

    private static double geometricMean(long[]x){
	int n = x.length;
	double logSum = 0.0;
	for (int i=0;i<n;i++) logSum = logSum + Math.log((double)x[i]);
	return Math.exp(logSum/(double)n);
    }

    private static long median(long[]x){
	int n = x.length;
	Arrays.sort(x);
	return x[n/2];
    }

    private static long min(long[]x){
	int n = x.length;
	long min = x[0];
	for (int i=1;i<n;i++) min = Math.min(min,x[i]);
	return min;
    }
    
    private static long max(long[]x){
	int n = x.length;
	long max = x[0];
	for (int i=1;i<n;i++) max = Math.max(max,x[i]);
	return max;
    }

    private static void stats(String alg,int n,int p,int lwb,int upb) throws IOException {
	int count        = 0;
	String fname     = "";
	long[] size      = new long[upb-lwb+1]; // size of max indSet
	long[] nds       = new long[upb-lwb+1]; // nodes visited
	long[] solveTime = new long[upb-lwb+1]; // milliseconds
	String s = "";
	if (p < 10) s = "0" + p; else s = s + p;

	for (int i=lwb;i<=upb;i++){
	    if (i < 10)
		fname = "../randomResultsJava/"+ alg +"-"+ n +"-"+ s +"-0"+ i +".txt";
	    else
		fname = "../randomResultsJava/"+ alg +"-"+ n +"-"+ s +"-"+ i +".txt";
	    Scanner sc = new Scanner(new File(fname));
	    size[count]      = sc.nextLong();
	    nds[count]       = sc.nextLong(); 
	    solveTime[count] = sc.nextLong();
	    count++;
	    sc.close();
	}
	System.out.format("%d  %.2f  ",n,((float)p)/100.0);
	System.out.print(average(nds) +" "+ min(nds) +" "+ median(nds) +" "+ max(nds) +" ");
	System.out.print(average(solveTime) +" "+ min(solveTime) +" "+ median(solveTime) +" "+ max(solveTime) +" ");
	System.out.print(average(size) +" "+ min(size) +" "+ median(size) +" "+ max(size));
	System.out.println();
    }

    public static void main(String[] args) throws IOException {
	String alg   = args[0];
	int n          = Integer.parseInt(args[1]); // vertices in a graph
	int pLo        = Integer.parseInt(args[2]); // edge probability
	int pHi        = Integer.parseInt(args[3]); // edge probability
	int pInc       = Integer.parseInt(args[4]); // increment for p
	int lwb        = Integer.parseInt(args[5]); // index of 1st results file
	int upb        = Integer.parseInt(args[6]); // index of last results file
     
	for (int p=pLo;p<=pHi;p=p+pInc)
	    stats(alg,n,p,lwb,upb);
    }
}