//  Ces programmes sont sous licence CeCILL-B V1.
void main() {
  int i, j, largeur1, hauteur1, largeur2, hauteur2, largeur3, hauteur3,
	  valeur1, valeur2, max1, max2, max3;
  int[][] gris1, gris2, gris3;
  String s;
  java.util.Scanner f1, f2;
  java.io.OutputStreamWriter f3;

  // Lecture de la première image
  f1 = openIn("maison1.pgm");
  s = readStringFromFile(f1);
  s = readStringFromFile(f1);
  largeur1 = readIntFromFile(f1);
  hauteur1 = readIntFromFile(f1);
  max1 = readIntFromFile(f1);
  gris1 = new int[largeur1][hauteur1];
  for(j = 0; j <= hauteur1 - 1; j = j + 1)
	for(i = 0; i <= largeur1 - 1; i = i + 1)
	  gris1[i][j= readIntFromFile(f1);
  closeIn(f1);

  // Lecture de la seconde image
  f2 = openIn("maison2.pgm");
  s = readStringFromFile(f2);
  s = readStringFromFile(f2);
  largeur2 = readIntFromFile(f2);
  hauteur2 = readIntFromFile(f2);
  max2 = readIntFromFile(f2);
  gris2 = new int[largeur2][hauteur2];
  for(j = 0; j <= hauteur2 - 1; j = j + 1)
	for(i = 0; i <= largeur2 - 1; i = i + 1)
	  gris2[i][j= readIntFromFile(f2);
  closeIn(f2);
  // Calcul des dimensions maximales des deux images
  if(largeur1 >= largeur2) {
	largeur3 = largeur1;
  else {
	largeur3 = largeur2;
  }
  if(hauteur1 >= hauteur2) {
	hauteur3 = hauteur1;
  else {
	hauteur3 = hauteur2;
  }
  // Calcul du niveau de gris maximal
  if(max1 >= max2) {
	max3 = max1;
  else {
	max3 = max2;
  }
  // Calcul de l'image fusionnée
  gris3 = new int[largeur3][hauteur3];
  for(j = 0; j <= hauteur3 - 1; j = j + 1)
	for(i = 0; i <= largeur3 - 1; i = i + 1) {
	  if((i < largeur1&& (j < hauteur1)) {
		valeur1 = max3 * gris1[i][j/ max1;
	  else {
		valeur1 = max3;
	  }
	  if((i < largeur2&& (j < hauteur2)) {
		valeur2 = max3 * gris2[i][j/ max2;
	  else {
		valeur2 = max3;
	  }
	  if(valeur1 < valeur2) {
		gris3[i][j= valeur1;
	  else {
		gris3[i][j= valeur2;
	  }
	}
  // Écriture de l'image fusionnée
  f3 = openOut("maisons.pgm");
  printlnToFile(f3, "P2");
  printlnToFile(f3, "#");
  printToFile(f3, largeur3);
  printToFile(f3, " ");
  printlnToFile(f3, hauteur3);
  printToFile(f3, max3);
  printlnToFile(f3);
  for(j = 0; j <= hauteur3 - 1; j = j + 1)
	for(i = 0; i <= largeur3 - 1; i = i + 1)
	  printlnToFile(f3, gris3[i][j]);
  closeOut(f3);

  showImage("maisons.pgm");
}