#include <stdio.h>
#include <stdlib.h>

void init(FILE* f, int** avrs, int*** lines, int n) {
   const int m = 5;
   int i;
   int j;
   int s;
   int* as;
   int** ls;
   int* l;

   /* read data */
   ls = malloc(sizeof(int*) * n);
   for (i = 0; i < n; i++) {
      l = malloc(sizeof(int) * m);
      fscanf(f, "%d　%d　%d　%d　%d%*c", &l[0], &l[1], &l[2], &l[3], &l[4]);
      ls[i] = l;
   }

   /* compute average */
   as = malloc(sizeof(int) * n);
   for (i = 0; i < n; i++) {
      l = ls[i];
      s = 0;
      for (j = 1; j < m; j++) {
         s += l[j];
      }
      as[i] = s / (m - 1);
   }

   *avrs = as;
   *lines = ls;
}

void sort(int* avrs, int** lines, int n) {
   int i;
   int j;
   int t1;
   int* t2;

   for (i = 0; i < n - 1; i++) {
      for (j = 0; j < n - 1; j++) {
         if (avrs[j] < avrs[j + 1]) {
            t1 = avrs[j];
            avrs[j] = avrs[j + 1];
            avrs[j + 1] = t1;
            
            t2 = lines[j];
            lines[j] = lines[j + 1];
            lines[j + 1] = t2;
         }
      }
   }
}

void print(int* avrs, int** lines, int n) {
   int i;
   int* line;
   for (i = 0; i < n; i++) {
      line = lines[i];
      printf("avr:%d　%d　%d　%d　%d　%d\n", avrs[i], line[0], line[1], line[2], line[3], line[4]);
   }
}

void term(int* avrs, int** lines, int n) {
   int i;
   free(avrs);
   for (i = 0; i < n; i++) {
      free(lines[i]);
   }
   free(lines);
}

int main(void) {
   int n;
   int* avrs;
   int** lines;
   FILE* f;

   f = fopen("test.dat", "r");
   fscanf(f, "%d%*c", &n);
   init(f, &avrs, &lines, n);
   fclose(f);
   sort(avrs, lines, n);
   print(avrs, lines, n);
   term(avrs, lines, n);
   
   return EXIT_SUCCESS;
}