Witam, mam problem z końcówką kodu. Polecenie brzmi:
*Użytkownik wprowadza macierz nx2. Każdy wiersz tej macierzy reprezentuje domknięty przedział liczbowy. Program zwraca macierz, która zawiera maksymalnie połączone przedziały. *

Np.
0 5
10 3
20 15
16 19
25 25

Wynik:
0 10
15 20
25 25

Kod:

package project;

import java.util.Scanner;

public class project {

	public static void main(String[] args) {
		int n;
		int m=2;
		System.out.println("Podaj liczbę wierszy macierzy: ");
		Scanner odczyt1 = new Scanner(System.in);
		n = odczyt1.nextInt();
		if (n<=0){
			System.out.println("Błędne dane!");
		}
		else {
			System.out.println("Wymiar macierzy: "+ n+"x"+m);
			}
		
		int[][] macierz = new int[n][m];
		System.out.println("Podaj elementy tej macierzy: ");
		Scanner odczyt2 = new Scanner(System.in);
	
		for (int i=0;i<n;i++) {
			for (int j=0;j<m;j++) {
				macierz[i][j] = odczyt2.nextInt();
		}
			}
		System.out.println("Podana macierz: ");
		for (int i=0;i<n;i++) {
			for (int j=0;j<m;j++) {
				System.out.print(macierz[i][j] + " ");
			}
			System.out.println(" ");
		}
		
		System.out.println(" ");
		System.out.println("Ustawianie przedziałów od najmniejszej liczby do największej: ");
		for (int i=0;i<n;i++){
				if (macierz[i][0]<macierz[i][1]){
					System.out.print(macierz[i][0] + " " + macierz[i][1]);
					System.out.println(" ");
				}
				else{
					System.out.print(macierz[i][1] + " " + macierz[i][0]);
					System.out.println(" ");
				}
			}
		System.out.println(" ");
		
	
		System.out.println("Sprawdzenie zawierania się przedziałów: ");
		
		for (int i=0;i<n;i++){
				if (macierz[i][0]<macierz[i+1][0]){
					if (macierz[i][1]>=macierz[i+1][0]&&macierz[i][1]<=macierz[i+1][1]){
						System.out.print(macierz[i][0]+" "+macierz[i+1][1]);}
					else if (macierz[i][1]>macierz[i+1][0]&&macierz[i][1]>macierz[i+1][1]){
						System.out.print(macierz[i][0]+" "+macierz[i][1]);}
				}
				else if( macierz[i][0]>macierz[i+1][0]&&macierz[i][0]>macierz[i+1][1]){
					System.out.println(" ");}
				
				else if (macierz[i][0]>macierz[i+1][0]&&macierz[i][0]==macierz[i+1][1]){
					System.out.print(macierz[i+1][0]+" "+macierz[i][1]);}
				}
			
		
	}
		
		}

Po uruchomieniu programu pojawia się taki błąd:
**Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at projekt8.projekt8.main(projekt8.java:55) **

Rozumiem, że program nie może odwołać się do takiego indeksu, ponieważ liczba wierszy macierzy przez wypisywanie tych połączonych przedziałów się zmniejsza. Pytanie, co zrobić, żeby program mi zwrócił macierz z maksymalnymi przedziałami?