OIG XVI - liz

// tresc: https://szkopul.edu.pl/problemset/problem/9y5Fywu8h7DyO89-gd5ifrju/site/?key=statement
// OIG XVI (2 etap)

#include <iostream>
#include <map>
#include <vector>

using namespace std;

std::map<int, int> smaki;

const int MINI = 1000 * 1000 * 1000 + 7;

int main() {
    ios_base::sync_with_stdio(0);

    int N;
    cin >> N;

    std::vector<int> A(N);

    int maxi = 0;

    for (int i = 0; i < N; i++) {
        cin >> A[i];
        if (A[i] > maxi) {
            maxi = A[i];
        }
    }

    int k = 0;
    int p = 0;
    int suma = 0;

    int wynik = 0;
    int mini = MINI;

    int max_smak = 0;
    int max_smak_wart = A[0];

    for (int i = 0; i < N; i++) {
        while (p < N && max_smak < 3) {
            smaki[A[p]]++;
            if (smaki[A[p]] > max_smak) {
                max_smak = smaki[A[p]];
                max_smak_wart = A[p];
            }
            p++;
        }

        if (max_smak == 3) {
            if (mini > p - i + 1) {
                mini = p - i + 1;
            }

            wynik++;
        }

        smaki[A[i]]--;

        if (max_smak_wart == A[i]) {
            max_smak--;
        }
    }

    if (mini == MINI) {
        cout << "NIE";
    } else {
        cout << mini - 1;
    }
}