Error: 'else' without 'if'

Eu sou novo na programação. Então, estava treinando, tentando fazer uns códigos e esse acabou dando um erro que não sei consertar. No prompt, aparece que na linha 31 tem em ‘else’ sem um ’ if '. Eu olhei e tentei concertar, mas não consegui. Se puderem me ajudar, agradeço.

import java.util.Scanner;

public class tarefa {
	public static void main(String args []) {
		Scanner leitor = new Scanner(System.in);
		
		int dia, mes, ano;
		
		System.out.println("Digite o dia da data:");
		dia = leitor.nextInt();
		
		System.out.println("Informe o mes da data:");
		mes = leitor.nextInt();
		
		System.out.println("Informe o ano da data:");
		ano = leitor.nextInt();
		
		if (ano > 0 && ano <= 2016) {
			if (ano % 4 == 0 && ano % 100 != 0 ) {
				System.out.println("Ano eh valido e eh bissexto.");
				
				if(mes > 0 && mes < 13) {
					if (mes == 2) {
						if (dia > 0 && dia < 30) {
							System.out.println("Data válida.");
						}
					} else {
						if (dia > 0 && dia < 32) {
							System.out.println("Data valida.");
						}
					}
				} else{
					System.out.println("O mes eh invalido.");
				}
				
				else {
					if (mes == 2) {
						System.out.println("Mes valido.");
						
						if (dia > 0 && dia < 29) {
							System.out.println("Data valida.");
						} else {
							System.out.println("Dia invalido");
						}
					} else {
						if (dia > 0 && dia < 32) {
							System.out.println("Data valida.");
						} else {
							System.out.println("Dia invalido.");
						}
					}
				}
			} else {
				System.out.println("Ano inválido.");
			}
		}
	}
}

Veja o código que postei. Coloquei um comentário no else que está errado.

import java.util.Scanner;

public class tarefa {
	public static void main(String args []) {
		Scanner leitor = new Scanner(System.in);
		
		int dia, mes, ano;
		
		System.out.println("Digite o dia da data:");
		dia = leitor.nextInt();
		
		System.out.println("Informe o mes da data:");
		mes = leitor.nextInt();
		
		System.out.println("Informe o ano da data:");
		ano = leitor.nextInt();
		
		if (ano > 0 && ano <= 2016) {
			if (ano % 4 == 0 && ano % 100 != 0 ) {
				System.out.println("Ano eh valido e eh bissexto.");
				
				if(mes > 0 && mes < 13) {
					if (mes == 2) {
						if (dia > 0 && dia < 30) {
							System.out.println("Data válida.");
						}
					} else {
						if (dia > 0 && dia < 32) {
							System.out.println("Data valida.");
						}
					}
				} else{
					System.out.println("O mes eh invalido.");
				}
				
				else { // esse else está perdido
					if (mes == 2) {
						System.out.println("Mes valido.");
						
						if (dia > 0 && dia < 29) {
							System.out.println("Data valida.");
						} else {
							System.out.println("Dia invalido");
						}
					} else {
						if (dia > 0 && dia < 32) {
							System.out.println("Data valida.");
						} else {
							System.out.println("Dia invalido.");
						}
					}
				}
			} else {
				System.out.println("Ano inválido.");
			}
		}
	}
}