#include <stdio.h>

#define MMAX 50
#define NMAX 50

void leia_matriz(int a[][NMAX], int m, int n);
void imprima_matriz(int a[][NMAX], int m, int n);
void menor_maior(int v[], int comp, int *pmin, int *pmax);
int processe_matriz(int a[][NMAX], int m, int n);

int main()
{
  int m, n, a[MMAX][NMAX], i, j;

  scanf("%d %d", &m, &n);
  leia_matriz(a,m,n);

  printf("Matriz lida:\n");
  imprima_matriz(a,m,n);
  i = processe_matriz(a,m,n);

  printf("Elementos da linha de peso maximo:\n");
  for (j=0; j<n; j++)
    printf("%3d ", a[i][j]);
  putchar('\n');
  
  return 0;
}

void leia_matriz(int a[][NMAX], int m, int n)
{
  int i, j;

  for (i=0; i<m; i++)
    for (j=0; j<n; j++)
      scanf("%d", &a[i][j]);
}

void imprima_matriz(int a[][NMAX], int m, int n)
{
  int i, j;

  for (i=0; i<m; i++) {
    for (j=0; j<n; j++)
      printf("%3d ", a[i][j]);
    putchar('\n');
  }
}

void menor_maior(int v[], int comp, int *pmin, int *pmax)
{
  int min, max, i;

  min = max = v[0];
  *pmin = *pmax = 0;
  for (i=1; i<comp; i++) {
    if (v[i]<min) {
      min = v[i];
      *pmin = i;
    }
    if (v[i]>max) {
      max = v[i];
      *pmax = i;
    }
  }
}

int processe_matriz(int a[][NMAX], int m, int n)
{
  int i, i_max, peso_max, j_min, j_max;
  
  printf("Pesos:\n");
  menor_maior(a[0], n, &j_min, &j_max);
  peso_max = a[0][j_min] + a[0][j_max];
  i_max = 0;

  printf("%d: %3d %3d  peso = %d\n",
	 0, a[0][j_min], a[0][j_max], a[0][j_min] + a[0][j_max]);
  
  for (i=1; i<m; i++) {
    menor_maior(a[i], n, &j_min, &j_max);
    if (peso_max < a[i][j_min] + a[i][j_max]) {
      peso_max = a[i][j_min] + a[i][j_max];
      i_max = i;
    }
    printf("%d: %3d %3d  peso = %d\n",
	   i, a[i][j_min], a[i][j_max], a[i][j_min]+a[i][j_max]);
  }

  printf("Linha de maior peso: %d\n", i_max);
  printf("Peso maximo: %d\n", peso_max);

  return i_max;
}

