import java.util.Random;
public class AvgNumofInversions {
public static int absoluteVal (int n)
{
return (n<0?-(n):n);
}
public static int factorial(int n)
{
if(n==0) return 1;
else return(n*factorial(n-1));
}
public static int inversionCount (int [] arr, int n)
{
int invCnt=0;
for (int i=0;i< n;i++)
{
for (int j=i+1;j<n;j++)
{
if (i<j && arr[i]>arr[j])
invCnt++;;
}
}
return invCnt;
}
public static void main(String[] args) {
int n=Integer.parseInt(args[0]);
int [] arr= new int[101];
int [][] result= new int [101][2];
for (int i=0; i<=n; i++)
{
for (int j=0; j<=n;j++)
{
int val=absoluteVal(new Random().nextInt()) %9;
arr[j]=val;
//System.out.println("value: "+val);
}
int numOfPermutations=factorial(i);
int numOfInverstions=inversionCount(arr,i);
result[i][0]=numOfPermutations;
result[i][1]=numOfInverstions;
}
System.out.println("N\tnumOfPermutations\tnumOfInverstions\t1/AvgNumOfInversions");
for (int i=0; i<=n;i++)
System.out.println(i+"\t\t"+result[i][0]+"\t\t\t"+result[i][1]+"\t\t"+(result[i][1]!=0?(result[i][0]/result[i][1]):"N/A"));
}
}