#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;
        fill(z, z + s1.size() + 1, 0);

        for (int j = 1; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

            maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;
        fill(z, z + s1.size() + 1, 0);

        for (int j = kol; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

            maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INF;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0) continue;
        string s1;
        int kol = 0;
        vi z(n + 2, 0);
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;

        for (int j = kol; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

            maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }
    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], z[j] = 0;
        kol = s1.size();
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j], z[j] = 0;
        int l = 0, r = 0, maxx = 0;
        z[n] = 0;

        for (int j = kol; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

           if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], z[j] = 0;
        kol = s1.size();
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j], z[j] = 0;
        int l = 0, r = 0, maxx = 0;
        z[n] = 0;

        for (int j = kol; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size()) {
                if (s1[z[j]] != s1[j + z[j]]) break;
                 z[j]++;
            }

           if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 || i == n - 1) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;
        fill(z, z + s1.size() + 1, 0);

        for (int j = kol; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

            maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;
        vi z(n + 2, 0);

        for (int j = 1; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

           if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0) continue;
        string s1;
        int kol = 0;
        vi z(n + 3, 0);
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;

        for (int j = kol; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

            maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INF;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], z[j] = 0;
        kol = s1.size();
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j], z[j] = 0;
        int l = 0, r = 0, maxx = 0;
        z[n] = 0;

        for (int j = 1; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size()) {
                if (s1[z[j]] != s1[j + z[j]]) break;
                 z[j]++;
            }

           if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;
        vi z(n + 2, 0);

        for (int j = kol - 1; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

           if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++, z[j] = 0;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j], z[j] = 0;
        int l = 0, r = 0, maxx = 0;

        for (int j = kol - 1; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

           if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j];
        int l = 0, r = 0, maxx = 0;

        for (int j = 1; j < s1.size(); j++) {
            z[j] = 0;
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

            if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include<bits/stdc++.h>

#define _FORTIFY_SOURCE 0 //просто херь
#pragma GCC optimize("Ofast") // векторизацию подрубает, ну там сложно
#pragma GCC optimize("no-stack-protector") //хуйня
#pragma GCC optimize("unroll-loops") // у тебя есть фор по 100 он просто берет и повторяет не фор а 100 раз ну иногда ускоряет
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") // вот здесь потно ну там 03 02 запускает с битами быстрее работает там тоже векторизация
#pragma GCC optimize("fast-math") //быстрее с вещественными работает ну там float оч быстрый становится
using namespace std;

const int N = 2e6 + 6, MOD = 1e9 + 7, mod = 998244353;

const long long INF = 2e17;

#define ss second
#define ff first
//#define int long long
#define double long double
#define pb push_back

using vi = vector <int>;
using vp = vector <pair <int, int>>;

mt19937 Flash_new_51(515151);

int dp[N], z[N];

signed main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n, a, b;
    string s;
    cin >> n >> a >> b >> s;
    for (int i = 0; i <= n; i++) dp[i] = INT_MAX;
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        dp[i + 1] = min(dp[i + 1], dp[i] + a);
        if (i == 0 ) continue;
        string s1;
        int kol = 0;
        for (int j = i; j < n; j++) s1+= s[j], kol++, z[j] = 0;
        s1+= '$';
        for (int j = 0; j < i; j++) s1+= s[j], z[j] = 0;
        int l = 0, r = 0, maxx = 0;

        for (int j = kol; j < s1.size(); j++) {
            if (j <= r) z[j] = min(r - j  + 1, z[j - l]);
            while (j + z[j] < s1.size() && s1[z[j]] == s1[j + z[j]]) z[j]++;

           if (j >= kol) maxx = max(z[j], maxx);
            if (j + z[j] - 1 > r) {
                r = j + z[j] - 1;
                l = j;
            }
        }
        if (maxx) {
            dp[i + maxx] = min(dp[i] + b, dp[i + maxx]);
        }
    }

    cout << dp[n];

}


#include <iostream>
#include <vector>
#include <cstdio>
#include <map>
#include <set>
#include <cmath>
#include <algorithm>
#include <string>
#include <unordered_map>
#include <unordered_set>

#define mp make_pair
using namespace std;

const int MOD = 1e9 + 13;
const int P = 239017;

map <int, int> ids;
int dp[5005];

int mul(int a, int b) {
	long long t = a;
	t *= (long long)b;
	t %= MOD;
	return t;
}

void solve() {
	int n, a, b;
	cin >> n >> a >> b;
	string s;
	cin >> s;
	s = '#' + s;
	for (int i = 1; i <= n; ++i) {
		string t;
		int hash = 0;
		for (int j = i; j >= 1; --j) {
			hash = (mul(hash, P) + s[j]) % MOD;
			if (ids.count(hash) == 0) {
				ids[hash] = i;
			}
		}
	}
	dp[0] = 0;
	for (int i = 1; i <= n; ++i) {
		dp[i] = dp[i - 1] + a;
		string ne;
		int len = 1;
		int hash = 0;
		for (int j = i; j > len; --j) {
			hash = (mul(hash, P) + s[j]) % MOD;
			int f;
			if (ids.count(hash)) f = ids[hash];
			else f = 1e9;
			if (f < j)
				dp[i] = min(dp[i], dp[j - 1] + b);
			len++;
		}
	}
	cout << dp[n] << '\n';
}

signed main() {
#ifndef ONLINE_JUDGE
	freopen("C:\\Documents and Settings\\olymp\\Рабочий стол\\in.txt", "r", stdin);
#endif
	ios::sync_with_stdio(false);
	cin.tie(0);
	solve();
	return 0;
}


#include <iostream>
#include <vector>
#include <cstdio>
#include <map>
#include <set>
#include <cmath>
#include <algorithm>
#include <string>
#include <unordered_map>
#include <unordered_set>

#define mp make_pair
using namespace std;

const int MOD = 1e9 + 13;
const int P = 239017;

unordered_map <int, int> ids;
int dp[5005];

int mul(int a, int b) {
	long long t = a;
	t *= (long long)b;
	t %= MOD;
	return t;
}

void solve() {
	int n, a, b;
	cin >> n >> a >> b;
	string s;
	cin >> s;
	s = '#' + s;
	for (int i = 1; i <= n; ++i) {
		string t;
		int hash = 0;
		for (int j = i; j >= 1; --j) {
			hash = (mul(hash, P) + s[j]) % MOD;
			if (ids.count(hash) == 0) {
				ids[hash] = i;
			}
		}
	}
	dp[0] = 0;
	for (int i = 1; i <= n; ++i) {
		dp[i] = dp[i - 1] + a;
		string ne;
		int len = 1;
		int hash = 0;
		for (int j = i; j > len; --j) {
			hash = (mul(hash, P) + s[j]) % MOD;
			int f;
			if (ids.count(hash)) f = ids[hash];
			else f = 1e9;
			if (f < j)
				dp[i] = min(dp[i], dp[j - 1] + b);
			len++;
		}
	}
	cout << dp[n] << '\n';
}

signed main() {
#ifndef ONLINE_JUDGE
	freopen("C:\\Documents and Settings\\olymp\\Рабочий стол\\in.txt", "r", stdin);
#endif
	ios::sync_with_stdio(false);
	cin.tie(0);
	solve();
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int dp[5005];
int can[5005][5005];
string s;
int n, a, b;

vector<int> prefix_function(string s) {
    int n = (int)s.length();
    vector<int> pi(n);
    for (int i = 1; i<n; ++i) {
        int j = pi[i - 1];
        while (j > 0 && s[i] != s[j])
            j = pi[j - 1];
        if (s[i] == s[j])  ++j;
        pi[i] = j;
    }
    return pi;
}

void calc_dp() {
    for (int i = 1; i <= n; ++i) {
        dp[i] = dp[i - 1] + a;
        for (int j = i; j >= 1; --j) {
            if (can[j][i]) {
                dp[i] = min(dp[i], dp[j - 1] + b);
            }
        }
    }
}

void solve() {
    cin >> n >> a >> b >> s;
    for (int i = n - 1; i; --i) {
        string t = "";
        string h = "";
        for (int j = i; j < n; ++j) {
            t += s[j], h += s[j];
        }
        t += '#';
        h += '#';
        for (int j = 0; j < i; ++j)
            t += s[j];
        auto g = prefix_function(t);
        for (int id = h.size(); id < g.size(); ++id) {
            can[i][i + g[id] - 1] = max(can[i][i + g[id] - 1], 1);
        }
    }
    calc_dp();
    cout << dp[n] << '\n';
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}


#include <bits/stdc++.h>

#define fori(i, a, b) for (int i = a; i < b; ++ i)
#define fori2(i, a, b) for (int i = a; i <= b; ++ i)
#define ford(i, a, b) for (int i = a; i >= b; -- i)

using namespace std;

typedef long long ll;

const int N = 5e3;

int n, a, b2;

string s;

int dp[N], z[N][N], b[N];

void cal_z() {
	fori (i, 0, n) {
		z[i][i] = n - i;

		int l, r;

		l = i;
		r = i;

		fori (j, i + 1, n) {
			if (j <= r)
				z[i][j] = min(z[i][j - l], r - j + 1);

			while (j + z[i][j] < n && s[i + z[i][j]] == s[i + j + z[i][j]])
				++ z[i][j];

			if (j + z[i][j] - 1 > r) {
				l = j;
				r = j + z[i][j] - 1;
			}
		}
	}

	fori (i, 1, n)
		fori (j, 0, i)
			b[i] = max(b[i], min(z[j][i], i - j + 1));
}

void process() {
        cin >> n >> a >> b2 >> s;

	cal_z();

        dp[0] = a;

        fori (i, 1, n) {
                dp[i] = dp[i - 1] + a;
                fori2 (j, 0, i - 1)
                        if (b[j + 1] >= i - j)
                                dp[i] = min(dp[i], dp[j] + b2);
        }

        cout << dp[n - 1];
}

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

	cin.tie(NULL);

        process();

	return 0;
}


#include <bits/stdc++.h>

#define fori(i, a, b) for (int i = a; i < b; ++ i)
#define fori2(i, a, b) for (int i = a; i <= b; ++ i)
#define ford(i, a, b) for (int i = a; i >= b; -- i)

using namespace std;

typedef long long ll;

const int N = 5e3;

int n, a, b2;

string s;

int dp[N], z[N][N], b[N];

void cal_z() {
	fori (i, 0, n) {
		z[i][i] = n - i;

		int l, r;

		l = i;
		r = i;

		fori (j, i + 1, n) {
			if (j <= r)
				z[i][j] = min(z[i][i + j - l], r - j + 1);

			while (j + z[i][j] < n && s[i + z[i][j]] == s[j + z[i][j]])
				++ z[i][j];

			if (j + z[i][j] - 1 > r) {
				l = j;
				r = j + z[i][j] - 1;
			}
		}
	}

	fori (j, 1, n)
		fori (i, 0, j)
			b[j] = max(b[j], min(z[i][j], j - i));
}

void process() {
        cin >> n >> a >> b2 >> s;

	cal_z();

        dp[0] = a;

        fori (i, 1, n) {
                dp[i] = dp[i - 1] + a;
                fori (j, 0, i)
                        if (b[j + 1] >= i - j)
                                dp[i] = min(dp[i], dp[j] + b2);
        }

        cout << dp[n - 1];
}

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

	cin.tie(NULL);

        process();

	return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    m.insert(a+b);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    m.insert(a*b);

}
int t=1+k-m.size();
cout<<t<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b,d;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    if(a<=10)
     d=a*10+b;
if(a>10 && a<=20)
    d=a*100+b;
    else
    d=a*1000+b;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    int d=a*10+b+a+b;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
using namespace std;
main()
{
int m[30][60]={0},k;
cin>>k;
int a,b,d=0;

for(int i=0;i<k;i++)
{
cin>>a>>b;
m[a][b]++;
if(m[a][b]>d)
d=m[a][b];
}
cout<<d<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    int d=a*10+b+a+b;
    cout<<d<<endl;
    m.insert(d);

}
cout<<m.size()<<endl;
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b,d;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    if(a<=5)
     d=a*5+b;
     if(a>5 && a<=10)
     d=a*10+b;
if(a>10 && a<=15)
    d=a*15+b;
    if(a>15 && a<=20)
    d=a*20+b;
    else
    d=a*25+b;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
#include<map>
using namespace std;
main()
{
int m[24][60]={0},k;
cin>>k;
int a,b,d=0;

for(int i=0;i<k;i++)
{
cin>>a>>b;
if(m[a][b]==0)
{
m[a][b]=1;
}
else
d++;
}
cout<<d+1<<endl;
return 0;
}


#include<stdio.h>
#include<string.h>
int a[24][60];
int main()
{
    int n,h,m,k;
    scanf("%d",&n);
    k=0;
    memset(a,0,sizeof(a));
    while(n--)
    {
        scanf("%d %d",&h,&m);
        a[h][m]++;
        if(a[h][m]>k)
            k=a[h][m];
    }
    printf("%d",k);
    return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    int d=a*10+b;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    int d=a*24+b*60;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    int d=a*24+b;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
#include<map>
using namespace std;
main()
{
map<int,int>m;
int k,a,b,d=0;
cin>>k;
for(int i=0;i<k;i++)
{
cin>>a>>b;
if(!m[a])
{
m[a]=b;
}
else
d++;
}
cout<<d+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b,d;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    if(a<=10)
     d=a*10+b;
    else
    d=a*100+b;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    int d=a*60+b*60;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<set>
using namespace std;
main()
{
set<int>m;
int k,a,b;
cin>>k;
for(int i=0;i<k;i++)
{
    cin>>a>>b;
    int d=a*10+b+a;
    m.insert(d);

}
int t=k-m.size();
cout<<t+1<<endl;
return 0;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    int a,b,c;
    int n,mx=-1;cin>>n;
    map<int,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=(a*60)+b;
        mp[c]++;
        mx=max(mx,mp[c]);
    }
    cout<<mx<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    int a,b,c;
    int n,mx=-1;cin>>n;
    map<int,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=(a*10)+b;
        mp[c]++;
        mx=max(mx,mp[c]);
    }
    cout<<mx<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
#include<set>
using namespace std;
int main()
{
    int a,b,c;
    int n,mx=-1;cin>>n;
    map<int,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=(a*60)+b;
        mp[c]++;
        mx=max(mx,mp[c]);
    }
    cout<<mx<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,cc=1,mx=-1;cin>>n;
    map<string,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=a+b;
        mp[c]++;
        if(mp[c]>1){cc++;/*cout<<cc<<"asdlasdj"<<endl;*/mx=max(mx,cc);}
        else cc=1;
    }
    cout<<mx<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,cc=1,mx=-1;cin>>n;
    map<string,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=a+b;
        mp[c]++;
        if(mp[c]>1 && mp[c]>mx)cc++;
    }
    cout<<cc<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,mx=-1;cin>>n;
    map<int,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=(a*10)+b;
        mp[c]++;
        mx=max(mx,mp[c]);
    }
    cout<<mx<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,cc=1;cin>>n;
    map<string,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=a+b;
        mp[c]++;
        if(mp[c]>1)cc++;
    }
    cout<<cc<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,cc=1,mx=1;cin>>n;
    map<string,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=a+b;
        mp[c]++;
        if(mp[c]>1){cc++;/*cout<<cc<<"asdlasdj"<<endl;*/mx=max(mx,cc);}
        else cc=1;
    }
    cout<<mx<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,mx=-1;cin>>n;
    map<string,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=a+b;
        mp[c]++;
        mx=max(mx,mp[c]);
    }
    cout<<mx<<endl;
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,mx=-1;cin>>n;
    map<string,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=a+b;
        mp[c]++;
        mx=max(mx,mp[c]);
    }
    cout<<mx<<endl;
    mp.clear();
}


#include<iostream>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    string a,b,c;
    int n,mx=-1;cin>>n;
    map<int,int> mp;
    while(n--)
    {
        cin>>a>>b;
        c=a+b;
        mp[c]++;
        mx=max(mx,mp[c]);
    }
    cout<<mx<<endl;
    mp.clear();
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1;
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n-1; i++)
            if(my[i+1].sc-my[i].sc<=0&&my[i+1].fs==my[i].fs)
                coutt++;
          ///  cout<<my[i].first<<"  "<<my[i].second<<endl;
            cout<<coutt<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=0;
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n-1; i++)
            if(my[i+1].sc-my[i].sc>0)
                coutt++;
          ///  cout<<my[i].first<<"  "<<my[i].second<<endl;
            cout<<coutt<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1;
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<=n-1; i++)
            if(my[i+1].sc-my[i].sc==0&&my[i+1].fs==my[i].fs)
                coutt++;
          ///  cout<<my[i].first<<"  "<<my[i].second<<endl;
            cout<<coutt<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1;
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<=n-1; i++)
            if(my[i+1].sc-my[i].sc<=0&&my[i+1].fs==my[i].fs)
                coutt++;
          ///  cout<<my[i].first<<"  "<<my[i].second<<endl;
            cout<<coutt<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1;
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n-1; i++)
            if(my[i+1].sc-my[i].sc==0&&my[i+1].fs==my[i].fs)
                coutt++;
          ///  cout<<my[i].first<<"  "<<my[i].second<<endl;
            cout<<coutt<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1,sum(1);
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n; i++)
          {
              if(my[i+1].sc==my[i].sc&&my[i+1].fs==my[i].fs)
               {
                   coutt++;
       //   cout<<my[i+1].sc-my[i].sc<<"  "<<my[i].first<<my[i].second<<endl;
               }
               else
               {
                sum =  max(sum,coutt);
                coutt=1;

               }
          }
            cout<<sum<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
     cin>>n ;

        vector <pair < ll , ll> > my;
        ll coutt=1,sum(1);
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n; i++)
          {
              if(my[i+1].sc==my[i].sc&&my[i+1].fs==my[i].fs)
               {
                   coutt++;
       //   cout<<my[i+1].sc-my[i].sc<<"  "<<my[i].first<<my[i].second<<endl;
               }
               else
               {
                sum =  max(sum,coutt);
                coutt=1;
}
          }
            cout<<sum<<endl;

    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1,sum(1);
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n; i++)
          {
              if(my[i+1].sc==my[i].sc&&my[i+1].fs==my[i].fs)
               {
                   coutt++;
       //   cout<<my[i+1].sc-my[i].sc<<"  "<<my[i].first<<my[i].second<<endl;
               }
               else
               {
                sum =  max(sum,coutt);
                coutt=1;
}
          }
            cout<<sum<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1;
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n-1; i++)
            if(my[i+1].sc-my[i].sc<=0)
                coutt++;
          ///  cout<<my[i].first<<"  "<<my[i].second<<endl;
            cout<<coutt<<endl;

    }return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
#define fs first
#define sc second
using namespace std;

int main()
{
    ll n,a,s;
    while(cin>>n)
    {
        vector <pair < ll , ll> > my;
        ll coutt=1,sum(1);
        for(int i=0; i<n; i++)
        {
            cin>>a>>s;
            my.push_back(make_pair(a,s));
        }
        sort(my.begin(),my.end());
        for(int i=0; i<n-1; i++)
          {
              if(my[i+1].sc==my[i].sc&&my[i+1].fs==my[i].fs)
               {
                   coutt++;
       //   cout<<my[i+1].sc-my[i].sc<<"  "<<my[i].first<<my[i].second<<endl;
               }
               else
               {
                sum =  max(sum,coutt);
                coutt=1;

               }
          }
            cout<<sum<<endl;

    }return 0;
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    char a[5];
    char b[5];
    int k;
    int l;
}node[100010],num[100010];
bool cmp(ss x,ss y)
{
    if(strcmp(x.a,y.a)==0)
        return strcmp(x.b,y.b)<0;
    return strcmp(x.a,y.a)<0;
}
int main()
{
    int i,n,l1,j,l2,s,l3,l4,l5,l6,l7,l8,t1,t2;
    while(cin>>n)
    {
        for(i=0;i<n;i++)
        {
            cin>>node[i].a>>node[i].b;
        }
        sort(node,node+n,cmp);
        for(i=0;i<n;i++)
        {
            l1=strlen(node[i].a);
            l2=strlen(node[i].b);
            t1=node[i].a[0]-'0';
            t2=node[i].a[1]-'0';
            if(l1==1)
                l3=t1;
            else
                l3=t1*10+t2;
            t1=node[i].b[0]-'0';
            t2=node[i].b[1]-'0';
            if(l2==1)
               l4=t1;
            else
               l4=t1*10+t2;
            num[i].k=l3;num[i].l=l4;

        }
        s=0;int l=0;int p=0;int p1=0;
        for(i=0;i<n-1;i++)
        {
            if(num[i].k==num[i+1].k)
            {
                if(num[i+1].l-num[i].l==0)
                    s=s++;
                if(s>p)
                    p=s;
                l=1;
            }else
                s=0;
        }
            cout<<p+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    char a[5];
    char b[5];
    int k;
    int l;
}node[100010],num[100010];
bool cmp(ss x,ss y)
{
    if(strcmp(x.a,y.a)==0)
        return strcmp(x.b,y.b)<0;
    return strcmp(x.a,y.a)<0;
}
int main()
{
    int i,n,l1,j,l2,s,l3,l4,l5,l6,l7,l8,t1,t2;
    while(cin>>n)
    {
        for(i=0;i<n;i++)
        {
            cin>>node[i].a>>node[i].b;
        }
        sort(node,node+n,cmp);
        for(i=0;i<n;i++)
        {
            l1=strlen(node[i].a);
            l2=strlen(node[i].b);
            t1=node[i].a[0]-'0';
            t2=node[i].a[1]-'0';
            if(l1==1)
                l3=t1;
            else
                l3=t1*10+t2;
            t1=node[i].b[0]-'0';
            t2=node[i].b[1]-'0';
            if(l2==1)
               l4=t1;
            else
               l4=t1*10+t2;
            num[i].k=l3;num[i].l=l4;

        }
        s=0;int l=0;int p=0;int p1=0;
        for(i=0;i<n-1;i++)
        {
            if(num[i].k==num[i+1].k)
            {
                if(num[i+1].l-num[i].l<=0)
                    s=s++;
                if(s>p)
                    p=s;
                l=1;
            }else
                s=0;
            if(num[i+1].k-num[i].k==1&&num[i+1].l-num[i].l==-59)
            {   p1++;}
        }
        if(num[n-1].k-num[0].k==23&&num[n-1].l-num[0].l==59)
            p1++;
        if(l==1)
            p++;
        p=p1+p;
            if(p==0)
                p=1;
            cout<<p<<endl;
    }
}


#include<iostream>
#include<algorithm>
using namespace std;
struct ss
{
    int a;
    int b;
}node[100010];
bool cmp(ss x,ss y)
{
    if(x.a==y.a)
        return x.b<y.b;
    return x.a<y.a;
}
int main()
{
    int i,j,s,p,n;
    while(cin>>n)
    {
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
      s=0;p=0;
      for(i=0;i<n-1;i++)
      {
          if(node[i].a==node[i+1].a&&node[i].b==node[i+1].b)
          {
              s++;
              continue;
          }
          if(s>p)
              p=s;
          else
              s=0;
      }
      cout<<p+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    int a;
    char b[3];
}node[100050];
bool cmp(ss x,ss y)
{
   if(x.a==y.a)
       return strcmp(x.b,y.b)<0;
   else
       return x.a<y.a;
}
int main()
{
    int i,j,l,n,m,s,l1,l2,l3,l4;
    while(cin>>n)
    {
        s=0;
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
     for(i=0;i<n-1;i++)
     {
         if(node[i].a==node[i+1].a)
         {
             l1=node[i+1].b[0]-'0';
             l2=node[i+1].b[1]-'0';
             l3=node[i].b[0]-'0';
             l4=node[i].b[1]-'0';
             if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(abs(l2-l4)<=1)
                 s++;

         }
     }
    cout<<s+1<<endl;
    }
}


#include<Iostream>
#include<algorithm>
using namespace std;
struct ss
{
    int a;
    int b;
}node[100050];
bool cmp(ss x,ss y)
{
   if(x.a==y.a)
       return x.b<y.b;
}
int main()
{
    int i,j,l,n,m,s;
    while(cin>>n)
    {
        s=0;
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
     for(i=0;i<n-1;i++)
     {
         if(node[i].a==node[i+1].a)
         {
             if(node[i+1].b-node[i].b<=1)
                 s++;

         }
     }
    cout<<s+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    char a[100];
    char b[3];
}node[100050];
bool cmp(ss x,ss y)
{
   if(strcmp(x.a,y.a)==0)
       return strcmp(x.b,y.b)<0;
   else
       return strcmp(x.a,y.a)<0;
}
int main()
{
    int i,j,l,n,m,s,l1,l2,l3,l4;
    while(cin>>n)
    {
        s=0;
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
     /* for(i=0;i<n;i++)
      {
          cout<<node[i].a<<" "<<node[i].b<<endl;
      }*/
     for(i=0;i<n-1;i++)
     {

             l1=node[i+1].b[0]-'0';
             l2=node[i+1].b[1]-'0';
             l3=node[i].b[0]-'0';
             l4=node[i].b[1]-'0';
         if(strcmp(node[i].a,node[i+1].a)==0)
         {
             if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(abs(l2-l4)<=1)
                 s++;

         }
         else
         {
              if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(node[i].a+1==node[i+1].a&&abs(l2-l4)==59)
                 s++;

         }
         int l5;int l6;
         int l7;int l8;
         l5=node[i].a[0];
         l6=node[i].a[0];
         l7=node[i+1].a[1];
         l8=node[i+1].a[1];
         if(l5==0)
             l6=l6;
         else
             l6=l6+l5*10;
         if(l7==0)
             l8=l8;
         else
             l7=l7*10+l8;
         if(abs(l7-l5)==23&&abs(l2-l4)==59)
             s++;
     }
    cout<<s+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    char a[100];
    char b[3];
}node[100050];
bool cmp(ss x,ss y)
{
   if(strcmp(x.a,y.a)==0)
       return strcmp(x.b,y.b)<0;
   else
       return strcmp(x.a,y.a)<0;
}
int main()
{
    int i,j,l,n,m,s,l1,l2,l3,l4;
    while(cin>>n)
    {
        s=0;
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
     /* for(i=0;i<n;i++)
      {
          cout<<node[i].a<<" "<<node[i].b<<endl;
      }*/
     for(i=0;i<n-1;i++)
     {

             l1=node[i+1].b[0]-'0';
             l2=node[i+1].b[1]-'0';
             l3=node[i].b[0]-'0';
             l4=node[i].b[1]-'0';
         if(strcmp(node[i].a,node[i+1].a)==0)
         {
             if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(abs(l2-l4)<=1)
                 s++;

         }
         else
         {
              if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(node[i].a+1==node[i+1].a&&abs(l2-l4)==59)
                 s++;

         }
         int l5,int l6;
         int l7;int l8;
         l5=node[i].a[0];
         l6=node[i].a[0];
         l7=node[i+1].a[1];
         l8=node[i+1].a[1];
         if(l5==0)
             l6=l6;
         else
             l6=l6+l5*10;
         if(l7==0)
             l8=l8;
         else
             l7=l7*10+l8;
         if(abs(l7-l5)==23&&abs(l2-l4)==59)
             s++;
     }
    cout<<s+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
struct ss
{
    int a;
    char b[3];
}node[100050];
bool cmp(ss x,ss y)
{
   if(x.a==y.a)
       return strcmp(x.b,y.b)<0;
   else
       return x.a<y.a;
}
int main()
{
    int i,j,l,n,m,s,l1,l2,l3,l4;
    while(cin>>n)
    {
        s=0;
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
     for(i=0;i<n-1;i++)
     {
         if(node[i].a==node[i+1].a)
         {
             l1=node[i+1].b[0]-'0';
             l2=node[i+1].b[1]-'0';
             l3=node[i].b[0]-'0';
             l4=node[i].b[1]-'0';
             if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(abs(l2-l4)<=1)
                 s++;

         }
     }
    cout<<s+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
using namespace std;
struct ss
{
    int a;
    int b;
}node[100010];
bool cmp(ss x,ss y)
{
    if(x.a==y.a)
        return x.b<y.b;
    return x.a<y.a;
}
int main()
{
    int i,j,s,p,n;
    while(cin>>n)
    {
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
      s=0;p=0;
      for(i=0;i<n-1;i++)
      {
          if(node[i].a==node[i+1].a&&node[i].b==node[i+1].b)
          {
              s++;
              continue;
          }
          if(s>p)
              p=s;
              s=0;
      }
      cout<<p+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
using namespace std;
struct ss
{
    int a;
    int b;
}node[100010];
bool cmp(ss x,ss y)
{
    if(x.a==y.a)
        return x.b<y.b;
    return x.a<y.a;
}
int main()
{
    int i,j,s,p,n;
    while(cin>>n)
    {
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
      s=0;p=0;
      for(i=0;i<n;i++)
      {
          if(node[i].a==node[i+1].a&&node[i].b==node[i+1].b)
              s++;
          if(s>p)
              p=s;
          else
              s=0;
      }
      cout<<p+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    char a[5];
    char b[5];
    int k;
    int l;
}node[100010],num[100010];
bool cmp(ss x,ss y)
{
    if(strcmp(x.a,y.a)==0)
        return strcmp(x.b,y.b)<0;
    return strcmp(x.a,y.a)<0;
}
int main()
{
    int i,n,l1,j,l2,s,l3,l4,l5,l6,l7,l8,t1,t2;
    while(cin>>n)
    {
        for(i=0;i<n;i++)
        {
            cin>>node[i].a>>node[i].b;
        }
        sort(node,node+n,cmp);
        for(i=0;i<n;i++)
        {
            l1=strlen(node[i].a);
            l2=strlen(node[i].b);
            t1=node[i].a[0]-'0';
            t2=node[i].a[1]-'0';
            if(l1==1)
                l3=t1;
            else
                l3=t1*10+t2;
            t1=node[i].b[0]-'0';
            t2=node[i].b[1]-'0';
            if(l2==1)
               l4=t1;
            else
               l4=t1*10+t2;
            num[i].k=l3;num[i].l=l4;

        }
        s=0;
        for(i=0;i<n-1;i++)
        {
            if(num[i].k==num[i+1].k)
            {
                if(num[i+1].l-num[i].l<=1)
                    s=s+2;
            }
            if(num[i+1].k-num[i].k==1&&num[i+1].l-num[i].l==-59)
            {   s++;}
        }
        if(num[n-1].k-num[0].k==23&&num[n-1].l-num[0].l==59)
            s++;
        if(s==0)
            s=1;
            cout<<s<<endl;
    }
}


#include<iostream>
#include<algorithm>
using namespace std;
struct ss
{
    int a;
    int b;
}node[100010];
bool cmp(ss x,ss y)
{
    if(x.a==y.a)
        return x.b<y.b;
    return x.a<y.a;
}
int main()
{
    int i,j,s,p,n,l;
    while(cin>>n)
    {
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
      s=0;p=0;l=0;
      for(i=0;i<n-1;i++)
      {
          if(node[i].a==node[i+1].a&&node[i].b==node[i+1].b)
          {
              s++;
              continue;
          }
          if(s>p)
          {
              p=s;
              l=1;
          }
              s=0;
      }
     if(s>p)
          {
              p=s;
              l=1;
          }
      cout<<p+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    int a;
    char b[3];
}node[100050];
bool cmp(ss x,ss y)
{
   if(x.a==y.a)
       return strcmp(x.b,y.b)<0;
   else
       return x.a<y.a;
}
int main()
{
    int i,j,l,n,m,s,l1,l2,l3,l4;
    while(cin>>n)
    {
        s=0;
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
     /* for(i=0;i<n;i++)
      {
          cout<<node[i].a<<" "<<node[i].b<<endl;
      }*/
     for(i=0;i<n-1;i++)
     {

             l1=node[i+1].b[0]-'0';
             l2=node[i+1].b[1]-'0';
             l3=node[i].b[0]-'0';
             l4=node[i].b[1]-'0';
         if(node[i].a==node[i+1].a)
         {
             if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(abs(l2-l4)<=1)
                 s++;

         }
         else
         {
              if(l1==0)
                l2=l2;
             else
                 l2=l1*10+l2;
             if(l3==0)
                 l4=l4;
             else
                 l4=l4+l3*10;
             if(node[i].a+1==node[i+1].a&&abs(l2-l4)==59)
                 s++;

         }
     }
    cout<<s+1<<endl;
    }
}


#include<Iostream>
#include<algorithm>
using namespace std;
struct ss
{
    int a;
    int b;
}node[100000];
bool cmp(ss x,ss y)
{
   if(x.a==y.a)
       return x.b<y.b;
}
int main()
{
    int i,j,l,n,m,s;
    while(cin>>n)
    {
        s=0;
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+i,cmp);
     for(i=0;i<n-1;i++)
     {
         if(node[i].a==node[i+1].a)
         {
             if(node[i+1].b-node[i].b<=1)
                 s++;

         }
     }
    cout<<s+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
using namespace std;
struct ss
{
    int a;
    int b;
}node[100010];
bool cmp(ss x,ss y)
{
    if(x.a==y.a)
        return x.b<y.b;
    return x.a<y.a;
}
int main()
{
    int i,j,s,p,n,l;
    while(cin>>n)
    {
      for(i=0;i<n;i++)
          cin>>node[i].a>>node[i].b;
      sort(node,node+n,cmp);
      s=0;p=0;l=0;
      for(i=0;i<n-1;i++)
      {
          if(node[i].a==node[i+1].a&&node[i].b==node[i+1].b)
          {
              s++;
              continue;
          }
          if(s>p)
          {
              p=s;
              l=1;
          }
              s=0;
      }
      if(l==1)
      cout<<p+1<<endl;
      else
          cout<<s+1<<endl;
    }
}


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct ss
{
    char a[5];
    char b[5];
    int k;
    int l;
}node[100010],num[100010];
bool cmp(ss x,ss y)
{
    if(strcmp(x.a,y.a)==0)
        return strcmp(x.b,y.b)<0;
    return strcmp(x.a,y.a)<0;
}
int main()
{
    int i,n,l1,j,l2,s,l3,l4,l5,l6,l7,l8,t1,t2,p;
    while(cin>>n)
    {
        for(i=0;i<n;i++)
        {
            cin>>node[i].a>>node[i].b;
        }
        sort(node,node+n,cmp);
        /*for(i=0;i<n;i++)
            cout<<node[i].a<<" "<<node[i].b<<endl;
        for(i=0;i<n;i++)
        {
            l1=strlen(node[i].a);
            l2=strlen(node[i].b);
            t1=node[i].a[0]-'0';
            t2=node[i].a[1]-'0';
            if(l1==1)
                l3=t1;
            else
                l3=t1*10+t2;
            t1=node[i].b[0]-'0';
            t2=node[i].b[1]-'0';
            if(l2==1)
               l4=t1;
            else
               l4=t1*10+t2;
            num[i].k=l3;num[i].l=l4;

        }
        s=0;int l=0;int p=0;int p1=0;

        for(i=0;i<n-1;i++)
        {
            if(num[i].k==num[i+1].k)
            {
                if(num[i+1].l-num[i].l==0)
                    s++;
                if(s>p)
                    p=s;
                l=1;
            }else
                s=0;
        }*/
        s=0;p=0;
        for(i=0;i<n-1;i++)
        {
          if(strcmp(node[i].a,node[i+1].a)==0)
          {
              if(strcmp(node[i].b,node[i+1].b)==0)
                  s++;
          }
          if(s>p)
              p=s;
          else
              s=0;
        }
            cout<<p+1<<endl;
    }
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int i = 0 ; i < n ; i++)
		r[i] = 0;
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] <= m[j]+1 && m[i] >= m[j]-1)
				{
					r[i]++;
				}
			}
		}
	}
	if(n == 0)
		cout << "0";
	else
		cout << max(r , n , 0)+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	bool *r = new bool[n];
	for(int i = 0 ; i < n ; i++)
		r[i] = false;
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if((m[i] <= m[j]+2 && m[i] >= m[j]-2))
				{
					r[i] = true;
					break;
				}
			}
		}
	}
	for(int i = 0 ; i < n ; i++)
		if(r[i] == true)
			k++;
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;
int min(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return min(a , n-1 , m);
}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int i = 0 ; i < n ; i++)
		r[i] = 0;
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] <= m[j]+2 && m[i] >= m[j]-2)
				{
					r[i]++;
				}
			}
		}
	}
	if(n == 0)
		k = 0;
	cout << min(r , n , 0)+1;

	system("pause");
	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j] || m[i]+1 == m[j] || m[i]-1 == m[j])
				{
					k++;
					break;
				}
			}
		}
	}
	if(n == 0)
		k = 0;
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n , a , b,k=1 , c = 0;

    ifstream fin("problem1 (7).in");
	ofstream fout("problem1 (7).out");
	fin >> n;

	for(int j = 0 ; j < n ; j++)
	{
		fin >> a;
		b = a;
		while(b>0)
		{
			b = b/10;
			if(b>0)
				k *=10;
		}
		for(int i=0 ; i < 5 ; i++)
		{
			c = c+((a%10)*k);
			a =a/10;
			k = k/10;
		}
		fout << c <<endl;
		c = 0;
		k = 1;
	}
	system("pause");
	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		r[i] = 0;
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j])
				{
					r[i]++;
				}
			}
		}
	}
	if(n == 0)
		cout << "0";
	else
		cout << max(r , n , 0)+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j] || m[i]+1 == m[j] || m[i]-1 == m[j])
				{
					k++;
				}
			}
		}
	}
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		r[i] = 0;
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j])
				{
					r[i]++;
				}
			}
		}
	}
	else
		cout << max(r , n , 0)+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j] || m[i]+1 == m[j] || m[i]-1 == m[j] || m[i]-2 == m[j] || m[i]+2 == m[j])
				{
					k++;
					break;
				}
			}
		}
	}
//	if(n == 0)
//		k = 0;
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1 , z=0;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		r[i] = 0;
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j] && m[i] == m[j])
			{
					r[i]++;
			}
		}
		if(r[i] > z)
			z = r[i];
	}
	cout << z+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int i = 0 ; i < n ; i++)
		r[i] = 0;
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j])
				{
					r[i]++;
				}
			}
		}
	}
	if(n == 0)
		cout << "0";
	else
		cout << max(r , n , 0)+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

/*int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}*/
int main()
{
	int n = 0,k=1 , z=0;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		r[i] = 0;
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j] && m[i] == m[j])
			{
					r[i]++;
			}
		}
	}
	for(int i = 0 ; i < n ; i++)
		if(r[i] > z)
			z = r[i];
	cout << z+1;

	return 0;
}


#include <iostream>

using namespace std;

int time[24][60];
const int maxn = 100300;

int main ( )
{
    int n;
    cin >> n;
    for ( int i=0; i<n; i++ ){
        int h, m;
        cin >> h >> m;
        time[h][m]++;
    }
    int max = 0;
    for ( int i=0; i<23; i++ ){
        for ( int j=0; j<59; j++ )
            if ( time[i][j] > max ){
                max = time[i][j];
            }
    }
    cout << maxi << endl;
    return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=0;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int i = 0 ; i < n ; i++)
		cin >> h[i] >> m[i];
	for(int i = 0 ; i < n ; i++)
	{
		for(int j = n-i ; j < n; j++)
		{
			if(h[i] == h[j] && m[i] == m[j])
				k++;
		}
	}
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		r[i] = 0;
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j])
				{
					r[i]++;
				}
			}
		}
	}
		cout << max(r , n , 0)+1;

	return 0;
}


#include <iostream>

using namespace std;

int time[24][60];

int main ( )
{
    int n , max=0;
    cin >> n;
    for (int i = 0 ; i < n ; i++ )
    {
        int h, m;
        cin >> h >> m;
        time[h][m]++;
    }
    for (int i = 0 ; i < 23 ; i++ ){
        for (int j = 0 ; j < 59 ; j++ )
            if ( time[i][j] > max ){
                max = time[i][j];
            }
    }
    cout << max << endl;
    return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=0;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int i = 0 ; i < n ; i++)
		cin >> h[i] >> m[i];
	for(int i = 0 ; i < n ; i++)
	{
		for(int j = n-i ; j < n; j++)
		{
			if(h[i] == h[j] && m[i] == m[j])
				k++;
		}
	}
	cout << k;

	return 0;
}sssss


#include <iostream>
#include <fstream>
#include <string>

using namespace std;
int min(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return min(a , n-1 , m);
}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int i = 0 ; i < n ; i++)
		r[i] = 0;
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] <= m[j]+2 && m[i] >= m[j]-2)
				{
					r[i]++;
				}
			}
		}
	}
	if(n == 0)
		k = 0;
	cout << min(r , n , 0)+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		r[i] = 0;
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j] && m[i] == m[j])
			{
					r[i]++;
			}
		}
	}

	cout << max(r , n , 0)+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1 ; j < n; j++)
		{
			if(h[i] == h[j+i])
			{
				if(m[i] == m[j+i] || m[i]+1 == m[j+i] || m[i]-1 == m[j+i] || m[i]-2 == m[j+i] || m[i]+2 == m[j+i])
				{
					k++;
					break;
				}
			}
		}
	}
	if(n == 0)
		k = 0;
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}
int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int i = 0 ; i < n ; i++)
		r[i] = 0;
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] <= m[j]+2 && m[i] >= m[j]-2)
				{
					r[i]++;
				}
			}
		}
	}
	if(n == 0)
		cout << "0";
	else
		cout << max(r , n , 0)+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	bool *r = new bool[n];
	for(int i = 0 ; i < n ; i++)
		r[i] = false;
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j] || m[i]+1 == m[j] || m[i]-1 == m[j])
				{
					r[i] = true;
					break;
				}
			}
		}
	}
	for(int i = 0 ; i < n ; i++)
		if(r[i] == true)
			k++;
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

/*int max(int a[] , int n , int m)
{
	if(n == 0)
		return m;
	if(a[n-1] > m)
		m = a[n-1];
	return max(a , n-1 , m);

}*/
int main()
{
	int n = 0,k=1 , z=0;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	int *r = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		r[i] = 0;
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j] && m[i] == m[j])
			{
					r[i]++;
			}
		}
		if(r[i] > z)
			z = r[i];
	}
/*	for(int i = 0 ; i < n ; i++)
		if(r[i] > z)
			z = r[i];*/
	cout << z+1;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j] || m[i]+1 == m[j] || m[i]-1 == m[j] || m[i]-2 == m[j] || m[i]+2 == m[j])
				{
					k++;
					break;
				}
			}
		}
	}
	if(n == 0)
		k = 0;
	cout << k;

	return 0;
}


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
	int n = 0,k=1;
	cin >> n;
	int *h = new int[n];
	int *m = new int[n];
	for(int p = 0 ; p < n ; p++)
		cin >> h[p] >> m[p];

	for(int i = 0 ; i < n ; i++)
	{
		for(int j = 1+i ; j < n; j++)
		{
			if(h[i] == h[j])
			{
				if(m[i] == m[j] || m[i]+1 == m[j] || m[i]-1 == m[j])
				{
					k++;
				}
			}
		}
	}
	if(n == 0)
		k = 0;
	cout << k;

	return 0;
}


#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct data{
	int h,m;
}n[100];
int cmp(const data &a,const data &b ){
	if(a.h!=b.h )return a.h<=b.h;
	else return a.m<=b.m;
}
int main(){
	int i,t,max,j,q;
	int count[55];
	while(scanf("%d",&t)!=EOF ){
		for(i=1;i<=t;i++)
			scanf("%d%d",&n[i].h,&n[i].m);
		sort(n,n+t,cmp);

		j=0;i=0;
		while(i<t){
			count[j]=1;
			while(n[i].h==n[i+1].h&&n[i].m==n[i+1].m ){
				count[j]++;
				i++;
			}
			i++;
			j++;
			max=count[0];
		}for(q=1;q<j;q++)
		{
			max=(max<count[q]?count[q]:max);

		}

		printf("%d\n",max);
	}
	return 0;

}


#include <iostream>
using namespace std;

int main()
{
	int number;
	while ( cin>>number )
	{
		int lastTime = -1;
		int nowTime = 0;
		int count = 1;
		int maxCount = 1;
		int inputHour, inputMInute;
		for ( int i= 0 ; i < number ; i ++ )
		{
			cin>>inputHour>>inputMInute;
			nowTime = inputHour * 60 + inputMInute;
			if ( nowTime == lastTime )
			{
				count ++;
				if ( count > maxCount )
					maxCount = count;
			}
			else
				count = 1;
			lastTime = nowTime;
		}
		cout<<maxCount<<endl;
	}
}


#include<iostream>
using namespace std;

int main(){
	int h,m;
	int n;
	while(cin >> n){
		int count[24][60] = { 0 };
		for(int i=0; i<n; i++){
			cin >> h >> m;
			count[h][m]++;
		}
		int max = 0;
		for(int j=0; j<24; j++){
			for(int k=0; k<60; k++){
				if(count[j][k] > max)
					max = count[j][k];
			}
		}
		cout << max << endl;
	}
	return 0;
}


#include<iostream>
using namespace std;

int main()
{
int a[17]={0};
for(int i=0;i<17;i++)
cin>>a[i];

cout<<2<<endl<<1;

return 0;
}


#include <iostream>
#include <algorithm>
#include <cstdio>

using namespace std;
int vis[100001];
int main()
{
    int num;
    int min,sec;
    int cnt;
   while( scanf("%d",&num)!=EOF)

    {
    	 cnt=1;
    	 for(int i=0;i<num;i++)
    	 	{
    	 		 scanf("%d%d",&min,&sec);
    	 		 vis[i]=min*60+sec;
    	 	}
    	 	sort(vis,vis+num);
    	 	for(int i=1;i<num;i++)
    	 	{
    	 		 if(vis[i]==vis[i-1])cnt++;
    	 	}
    	 	cout<<cnt<<endl;

    }
    return 0;
}


#include<iostream>
using namespace std;

int main()
{
	int number,cashnumber=1,count=1;
	cin>>number;
	int *hour=new int[number];
	int *minute=new int[number];
	for(int i=0;i<number;i++)
	{
		cin>>hour[i]>>minute[i];
	}
	for(int j=0;j<number;j++)
	{
		while(hour[j]==hour[j+1]&&minute[j]==minute[j+1])
		{
			count++;
			j++;
		}
		if(count>cashnumber)
			cashnumber=count;
		count=1;
	}
	cout<<cashnumber<<endl;
}


#include<iostream>
#include<cstdio>
using namespace std;
int main()
{int n,h,m,cash,*p,max,*r;
while(1)
{
	cin>>n;
p=new int[n];r=new int[n];cash=1;max=1;scanf("%d%d",&h,&m);p[0]=h;r[0]=m;
for(int i=1;i<n;i++)
	{
		scanf("%d%d",&h,&m);
		p[i]=h;r[i]=m;
		if((p[i]==p[i-1])&&(r[i]==r[i-1])){cash=cash+1;if(max<cash)max=cash;}
	else cash=1;
}

cout<<max<<endl;
}
}


#include <iostream>
using namespace std;

int main()
{
	int s[24][60]={1};
	int n;
	if(n>=1&&n<=100000)
	cin>>n;

	for(int i=0;i<n;i++)
	{
		int h;
		int m;
		cin>>h;
		cin>>m;
		s[h][m]++;
	}
	int max=s[0][0];
	for(int i=0;i<24;i++)
	{
		for(int j=0;j<59;j++)
		{
			if(max<s[i][j+1])
				{max=s[i][j+1];}

		}
	}
	cout<<max;
}


#include <iostream>
#include <algorithm>
using namespace std;

#include <cstring>

int counter[2400];

int main()
{
	int n, h, m,t;
	while (cin >> n)
	{
		memset(counter, 0, sizeof(counter));

		for (int i = 0; i < n; ++i)
		{
			cin >> h >> m;
			++counter[h*100+m];
		}

		int mt = counter[0];
		for (int i = 0; i < 2360; ++i)
			if (counter[i] > mt) mt = counter[i];
		cout << mt << endl;
	}
	return 0;
}


#include <iostream>

using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        int h,m,th=-1,tm=-1,cash=1;
        int index=1;
        if(n==0)
            cout<<0<<endl;
        else
        {
            for(int i=0;i<n;i++)
            {
                cin>>h>>m;
                if(h==th && m==tm)
                {
                    index++;
                    if(index>=cash)
                    {
                        cash=index;
                    }
                }
                else
                {
                    index=1;
                }
                th=h;
                tm=m;
            }
            cout<<cash<<endl;
        }
    }
}


#include <cstdio>

#include <cstring>
using std::memset;

int tmp1, tmp2, tmp3;
int n, i, count, res;

int main(){
	while( scanf( "%d", &n ) != EOF ){
		for( res = i = 0; i < n; i++ ){
			scanf( "%d%d", &tmp1, &tmp2 );
			tmp1 = tmp1 * 100 + tmp2;
			if( i ){
				if( tmp1 == tmp3 ){
					count++;
				}
				else{
					count = 1;
				}
				res = res < count ? count : res;
			}
			tmp3 = tmp1;
		}
		printf( "%d\n", res ? res : 1 );
	}
	return 0;
}


#include<iostream>
using namespace std;
int a[10000],b[10000];
int main()
{
	int n,i,j;
	while(cin>>n)
	{
		int t=0,m=0;
		for(i=0;i<n;i++)
		{
			cin>>a[i]>>b[i];
		}
		for(i=0;i<n-1;i++)
		{
			for(j=0;j<n-i;j++)
			{
				if(a[i]==a[j]&&b[i]==b[j])t++;
			}
			if(t>m)m=t;
		}
		cout<<m<<endl;
	}
	return 0;
}


#include<iostream>
#include<cstring>
using namespace std;
int h[100000];
int m[100000];
int k[100000];
int main()
{
	int n;
	cin>>n;
	while(cin.fail()==0)
	{
		int i,j;
		memset(k,0,sizeof(k));
		int f1=24;
		int f2=60;
		for(i=0;i<n;i++)
		{
			cin>>h[i]>>m[i];
		}
		int max=0;
		for(i=0;i<n;i++)
		{
			for(j=i+1;j<n;j++)
				if(h[i]==h[j]&&m[i]==m[j])
				{
					k[i]++;
					h[j]=f1++;
					m[j]=f2++;
					if(k[i]>max)
						max=k[i];
				}
		}
		cout<<max+1<<endl;
		cin>>n;
	}
	return 0;
}


#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct data{
	int h,m;
}n[100];
int cmp(const data &a,const data &b ){
	if(a.h!=b.h )
    return a.h<=b.h;
	else return a.m<=b.m;
}
int main(){
	int i,t,count,k;
     scanf("%d",&t)  ;
		for(i=1;i<=t;i++)
			scanf("%d%d",&n[i].h,&n[i].m);
		sort(n,n+t,cmp);
		count=0;
		k=-1;
		for(i=0;i<=t;i++){
			if(n[i].h==n[i+1].h&&n[i].m==n[i+1].m ){
				count++;
			}
			else
			{
			  if(count>k)
			     k=count;
            }
		}
		if(count>k)
		  k=count;
		printf("%d\n",k);
	return 0;

}


#include <iostream>
#include <vector>
using namespace std;
int main()
{
	int h,min,n;
	vector<int> ivec,ivec_max;
	while (cin>>n)
	{
		while (n--)
		{
			cin>>h>>min;
			ivec.push_back(h*60+min);
		}
		int k=1;
		for (vector<int>::iterator iter=ivec.begin()+1;iter!=ivec.end();iter++)
		{
			if (*iter==*(iter-1))
				k++;
			else
			{
				ivec_max.push_back(k);
				k=1;
			}
			ivec_max.push_back(k);
		}
		int max=1;
		for (vector<int>::iterator iter=ivec_max.begin();iter!=ivec_max.end();iter++)
		{
			if (*iter>max)
				max=*iter;
		}
		cout<<max<<endl;
	}
	return 0;
}


#include <iostream>

using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        int h,m,th=-1,tm=-1,cash=1;
        int index=1;
        if(n==0)
            cout<<0<<endl;
        else
        {
            for(int i=0;i<n;i++)
            {
                cin>>h>>m;
                if(h==th && m==tm)
                {
                    if(index>=cash)
                    {
                        index++;
                        cash=index;
                    }
                }
                else
                {
                    index=1;
                }
                th=h;
                tm=m;
            }
            cout<<cash<<endl;
        }
    }
}


#include<iostream>
using namespace std;
struct node{int h;int m;};
int main()
{int i=0,n;int s=1,sum=0;;node* a;
cin>>n;
a=new node[n];
cin>>a[i].h>>a[i].m;
for( i=1;i<n;i++)
{cin>>a[i].h>>a[i].m;
if(a[i].h==a[i-1].h&&a[i].m==a[i-1].m)s++;
else {if(a[i-s-1].h==a[i-1].h&&a[i-1].m==a[i-s-1].m+1)sum+=s;
else if(s>sum)sum=s;
s=1;}
}
cout<<sum<<endl;

}


#include<iostream>
using namespace std;
struct time
{
	int h;
	int m;
	int t;
}a[50000];
int main()
{
	int i,n;
	int p, count;
	int max;
	cin>>n;
	max=0;
	for(i=0;i<n;i++)
	{
		cin>>a[i].h;
		cin>>a[i].m;
		a[i].t=a[i].h*60+a[i].m;
	}
	p=0;
	for(i=1;i<n;i++)
	{
		count=1;
		while(a[i].t-a[p].t<1&&i<n)
		{
			i++;
			count++;
		}
		if(count>=max)
			max=count;
		p=i;
	}
	cout<<max<<endl;
	return 0;
}


#include<iostream>
using namespace std;

int main()
{
	int n;
	while(cin>>n)
	{
		int k=0;
		int g=0;
	    int f=0;
		int *a=new int[n];
	    int *b=new int[n];
		if(n<1||n>(10^5))
		{
			cout<<"n���"<<endl;
		}
		else
		{
			for(int i=0;i<n;i++)
			{
				cin>>a[g]>>b[f];
				g++;
				f++;
			}
			int q=0;
			for(int r=0;r<g;r++)
			{
				int i=0;
				while(i<=g)
				{
				if(a[r]!=a[i])
				{
					i++;
				}
				else
				{
					if(b[q]!=b[i])
					{
						i++;
					}
					else
					{
						k++;
						i++;
					}
				}

				}
				r++;
				q++;
			}
		}
		cout<<k<<endl;
	}
	return 0;
}


#include<iostream>
#include <algorithm>
# include <cmath>
#include<string>
using namespace std;
int main()
{
	int n;
	cin>>n;
	for (int i=1;i<=n;i++)
	   {
	       for(int j=1;j<=7;j++)
	          { if(i<=n/2+1 && j>(n/2+1-i) && (j<(n/2+1+i)))
	            cout<<"D";
	            else if(i>n/2+1 && j>=i-n/2 && (j<=1.5*n-i+1))
	            cout<<"D";
	            else
	            cout<<"*";
	          }
	        cout<<endl;
	   }

}


#include<iostream>
#include <algorithm>
# include <cmath>
#include<string>
using namespace std;
int main()
{
	int n;
	cin>>n;
	for (int i=1;i<=n;i++)
	   {
	       for(int j=1;j<=n;j++)
	          { if(i<=n/2+1 && j>(n/2+1-i) && (j<(n/2+1+i)))
	            cout<<"D";
	            else if(i>n/2+1 && j>=i-n/2 && (j<=1.5*n-i+1))
	            cout<<"D";
	            else
	            cout<<"*";
	          }
	        cout<<endl;
	   }

}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    vector <vector <char> > a(n , vector <char >(n , 0));
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<n;++j)
        {
            a[i][j] = 'D';
        }
    }
    int str = n /2+1;
    for (int i =0;i<n/2+1;i++)
    {
        str--;
        for (int j=0;j<str;j++)
        {
            a[i][j] = '*';
        }
        for (int j = n-1;j>=n-str;j--)
        {
            a[i][j] = '*';
        }
    }
    for (int i=0;i<n/2+1;i++)
    {
        for (int j =0;j<n;j++)
        cout<<a[i][j] <<" ";
        cout<<endl;
    }
    for (int i =n/2-1;i>=0;i--)
    {
        for (int j =0;j<n;j++)
        cout<<a[i][j] <<" ";
        cout<<endl;
    }

}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    vector <vector <char> > a(n , vector <char >(n , 0));
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<n;++j)
        {
            a[i][j] = 'D';
        }
    }
    int str = n /2+1;
    for (int i =0;i<n/2+1;i++)
    {
        str--;
        for (int j=0;j<str;j++)
        {
            a[i][j] = '*';
        }
        for (int j = n-1;j>=n-str;j--)
        {
            a[i][j] = '*';
        }
    }
    for (int i=0;i<n/2+1;i++)
    {
        for (int j =0;j<n;j++)
        cout<<a[i][j] ;
        cout<<endl;
    }
    for (int i =n/2-1;i>=0;i--)
    {
        for (int j =0;j<n;j++)
        cout<<a[i][j] ;
        cout<<endl;
    }

}


//   ALLAH IS THE ALMIGHTY   //
#include<bits/stdc++.h>
using namespace std;
int main(){
  ios::sync_with_stdio(false);
  cin.tie(0);cout.tie(0);
  int n;
  cin >> n;
  int mid = n / 2 + 1;
  for (int i = 1; i <= mid; i++) {
    for (int j = 1; j <= mid - i; j++){
      cout << "*";
    }
    for (int j = 1; j <= i; j++) {
      cout << "D";
    }
    for (int  j = 1; j <= i - 1; j++) {
      cout << "D";
    }
    for (int j = 1; j <= mid - i; j++) {
      cout << "*";
    }
    cout << '\n';
  }
  for (int i = mid - 1; i >= 1; i--) {
    for (int j = 1; j <= mid - i; j++){
      cout << "*";
    }
    for (int j = 1; j <= i; j++) {
      cout << "D";
    }
    for (int  j = 1; j <= i - 1; j++) {
      cout << "D";
    }
    for (int j = 1; j <= mid - i; j++) {
      cout << "*";
    }
    cout << '\n';
  }
  return 0;
}
//           SOLVED!            //


//   ALLAH IS THE ALMIGHTY   //
#include<bits/stdc++.h>
using namespace std;
int main(){
  ios::sync_with_stdio(false);
  cin.tie(0);cout.tie(0);
  int n;
  cin >> n;
  int mid = n / 2 + 1;
  for (int i = 1; i <= mid; i++) {
    for (int j = 1; j <= mid - i; j++){
      cout << "*";
    }
    for (int j = 1; j <= i; j++) {
      cout << "D";
    }
    for (int  j = 1; j <= i - 1; j++) {
      cout << "D";
    }
    for (int j = 1; j <= mid - i; j++) {
      cout << "*";
    }
    cout << '\n';
  }
  for (int i = mid; i >= 1; i--) {
    for (int j = 1; j <= mid - i; j++){
      cout << "*";
    }
    for (int j = 1; j <= i; j++) {
      cout << "D";
    }
    for (int  j = 1; j <= i - 1; j++) {
      cout << "D";
    }
    for (int j = 1; j <= mid - i; j++) {
      cout << "*";
    }
    cout << '\n';
  }
  return 0;
}
//           SOLVED!            //


#include <bits/stdc++.h>
using namespace std;

#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define cl(x, v) memset((x), (v), sizeof(x))
#define db(x) cerr << #x << " == " << x << endl
#define dbs(x) cerr << x << endl
#define _ << ", " <<

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<vi> vii;

const ld EPS = 1e-9, PI = acos(-1.);
const ll LINF = 0x3f3f3f3f3f3f3f3f, LMOD = 1011112131415161719ll;
const int INF = 0x3f3f3f3f, MOD = 1e9+7;
const int N = 1e3+5;

int n;
char t[N][N];

int main () {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) t[i][j] = 'D';

    for (int i = 1; i <= n/2; i++) {
        for (int j = 1; j <= n/2-i+1; j++) t[i][j] = t[n-i+1][j] = '*';
        for (int j = 1; j <= n/2-i+1; j++) t[i][n-j+1] = t[n-i+1][n-j+1] = '*';
    }

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) printf("%c%c", t[i][j], "\0\n"[j==n]);
    return 0;
}


#include <bits/stdc++.h>
using namespace std;

#define st first
#define nd second
#define mp make_pair
#define pb push_back
#define cl(x, v) memset((x), (v), sizeof(x))
#define db(x) cerr << #x << " == " << x << endl
#define dbs(x) cerr << x << endl
#define _ << ", " <<

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<vi> vii;

const ld EPS = 1e-9, PI = acos(-1.);
const ll LINF = 0x3f3f3f3f3f3f3f3f, LMOD = 1011112131415161719ll;
const int INF = 0x3f3f3f3f, MOD = 1e9+7;
const int N = 1e3+5;

int n;
char t[N][N];

int main () {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) t[i][j] = 'D';

    for (int i = 1; i <= n/2; i++) {
        for (int j = 1; j <= n/2-i+1; j++) t[i][j] = t[n-i+1][j] = '*';
        for (int j = 1; j <= n/2-i+1; j++) t[i][n-j+1] = t[n-i+1][n-j+1] = '*';
    }

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) printf("%c%s", t[i][j], (j == n) ? "\n" : "");
    return 0;
}


    #include<bits/stdc++.h>
    using namespace std;

    int main()
    {
        int n; cin>>n; int len=1;
        for(int i=0; i<n/2; i++)
        {
            int rem = n-len;
            rem/=2;
            for(int k=0; k<rem; k++)
                cout<<'*';
            for(int l=0; l<len; l++)
                cout<<'D';
            for(int k=0; k<rem; k++)
                cout<<'*';
            cout<<"\n";
            len++;
        }
        for(int i=0; i<n; i++)
            cout<<'D';
        cout<<"\n";
        len=n-1;
        for(int i=0; i<=n/2; i++)
        {
            int rem = n-len;
            rem/=2;
            for(int k=0; k<rem; k++)
                cout<<'*';
            for(int l=0; l<len; l++)
                cout<<'D';
            for(int k=0; k<rem; k++)
                cout<<'*';
            cout<<"\n";
            --len;
        }
    }


    #include<bits/stdc++.h>
    using namespace std;

    int main()
    {
        int n; cin>>n; int len=1;
        for(int i=0; i<n/2; i++)
        {
            int rem = n-len;
            rem/=2;
            for(int k=0; k<rem; k++)
                cout<<'*';
            for(int l=0; l<len; l++)
                cout<<'D';
            for(int k=0; k<rem; k++)
                cout<<'*';
            cout<<"\n";
            len+=2;
        }
        for(int i=0; i<n; i++)
            cout<<'D';
        cout<<"\n";
        len=n-2;

        for(int i=0; i<n/2; i++)
        {
            int rem = n-len;
            rem/=2;
            for(int k=0; k<rem; k++)
                cout<<'*';
            for(int l=0; l<len; l++)
                cout<<'D';
            for(int k=0; k<rem; k++)
                cout<<'*';
            cout<<"\n";
            len-=2;
        }
    }


    #include<bits/stdc++.h>
    using namespace std;

    int main()
    {
        int n; cin>>n; int len=1;
        for(int i=0; i<n/2; i++)
        {
            int rem = n-len;
            rem/=2;
            for(int k=0; k<rem; k++)
                cout<<'*';
            for(int l=0; l<len; l++)
                cout<<'D';
            for(int k=0; k<rem; k++)
                cout<<'*';
            cout<<"\n";
            len+=2;
        }
        for(int i=0; i<n; i++)
            cout<<'D';
        cout<<"\n";
        len=n-2;
        for(int i=0; i<=n/2; i++)
        {
            int rem = n-len;
            rem/=2;
            for(int k=0; k<rem; k++)
                cout<<'*';
            for(int l=0; l<len; l++)
                cout<<'D';
            for(int k=0; k<rem; k++)
                cout<<'*';
            cout<<"\n";
            len-=2;
        }
    }


#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n; cin>>n; int len=1;
    for(int i=0; i<=n/2; i++)
    {
        int rem = n-len;
        rem/=2;
        for(int k=0; k<rem; k++)
            cout<<'*';
        for(int l=0; l<len; l++)
            cout<<'D';
        for(int k=0; k<rem; k++)
            cout<<'*';
        len++;
    }
    for(int i=0; i<n; i++)
        cout<<'D';
    len=n-1;
    for(int i=0; i<=n/2; i++)
    {
        int rem = n-len;
        rem/=2;
        for(int k=0; k<rem; k++)
            cout<<'*';
        for(int l=0; l<len; l++)
            cout<<'D';
        for(int k=0; k<rem; k++)
            cout<<'*';
        --len;
    }
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    scanf("%d", &n);
    int old[n];
    for(int i = 0; i<n; i++) scanf("%d", &old[i]);

    int p1 = 0, p2 = 0, mid = 1;

    while(mid<=n){
        p1 = 0, p2 = 0;
        for(int i = 0; i<mid; i++){
           p1 += old[i];
        }
        for(int i = mid; i<n; i++){
            p2 += old[i];
        }
        if(p1 != 0 && p2 != 0){
            printf("YES\n2\n%d %d\n%d %d\n", 1, mid, mid+1, n);
            return 0;
        }

        else if(p1 + p2 != 0){
            printf("YES\n1\n%d %d\n", 1, n);
            return 0;
        }
        mid++;
    }

    printf("NO\n");

    return 0;

}


#include <bits/stdc++.h>

#define Read()            freopen("in.txt", "r", stdin)
#define Write()           freopen("out.txt", "w", stdout)
#define min3(a, b, c)     min(a, min(b, c))
#define max3(a, b, c)     max(a, max(b, c))
#define TC(i, a, b)       for(int i = a; i<=b; i++)
#define FOR(i, a, b)      for(int i = a; i<b; i++)
#define ROF(i, a, b)      for(int i = a; i>=b; i--)
#define MEM(a, x)         memset(a, x, sizeof(a))
#define SQR(x)            ((x)*(x))
#define valid(x, s, e)    (x>=s && x<=e)
#define sz(a)             int((a).size())
#define all(c)            (c).begin(),(c).end()
#define tr(c,i)           for(typeof((c).begin() i = (c).begin(); i != (c).end(); i++)
#define present(c,x)      ((c).find(x) != (c).end())
#define cpresent(c,x)     (find(all(c),x) != (c).end())
#define pb                push_back
#define MAX               10000000
#define ff                first
#define ss                second
#define sf                scanf
#define pf                printf

const int dx[] = { 0, -1,  0,  1,        -1,  1,  1, -1,     -2, -2,  2,  2, -1, -1,  1,  1};
const int dy[] = {-1,  0,  1,  0,         1,  1, -1, -1,     -1,  1, -1,  1, -2,  2, -2,  2};

using namespace std;

typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> ii;
typedef long long LL;
typedef unsigned long long ULL;

int main(int argc, char const *argv[])
{
    #ifndef ONLINE_JUDGE
        Read();
        Write();
    #endif

    int x;
    sf("%d", &x);

    for(int i = 1; i<=x; i+=2){
        FOR(j, 0, (x-i)/2) printf("*");
        FOR(j, 0, i) printf("D");
        FOR(j, 0, (x-i)/2) printf("*");
        printf("\n");
    }

    for(int i = x-2; i>=1; i-=2){
        FOR(j, 0, (x-i)/2) printf("*");
        FOR(j, 0, i) printf("D");
        FOR(j, 0, (x-i)/2) printf("*");
        printf("\n");
    }

}


    /*
    	Question Link-
    	http://codeforces.com/contest/454/problem/A
    */

    #include <bits/stdc++.h>
    #define mp make_pair
    using namespace std;

   	bool desc(pair<long long,long long> a,pair<long long,long long> b){
   			return a.first>b.first	;
   	}

   int main()
 {

    		ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    	 	long long int i,j,n,m,cont=0,p,q,d,mn,l,r,sum=0,k,a,b,diff,z,w,sum2=0,c,x,y,mx,first;

			cin>>n;

			string s[n];

			for(i=0;i<n;i++){
				for(j=0;j<n;j++)
				s[i]+='*';
			}

			m=n/2;

			for(i=0;i<=m;i++){
				for(j=m-i;j<m+i+1;j++)
				s[i][j]='D';
			}

			for(i=m+1;i<n;i++){
				for(j=i-m;j<n-i+m;j++)
				s[i][j]='D';

			}

			for(i=0;i<n;i++)
			cout<<s[i]<<endl;

}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n; cin >> n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            int odd=abs(i-(n+1)/2)+abs(j-(n+1)/2);
            if(odd>n/2) cout << "*";
            else cout << "D";
        }
        cout << endl;
    }
}


#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	for (int i = 0, d = 1; i < n; i++, d = (d+2) % (n+1)) {
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		for (int j = 0; j < d; j++)
			cout << 'D';
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		cout << '\n';
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	for (int i = 0, d = 1; i < n; i++) {
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		for (int j = 0; j < d; j++)
			cout << 'D';
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		cout << '\n';
		if (i < n/2)
			d += 2;
		else
			d -= 2;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	for (int i = 0, d = 1; i < n; i++) {
		d = 1 + (2*i)%(n-1);
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		for (int j = 0; j < d; j++)
			cout << 'D';
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		cout << '\n';
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	for (int i = 0, d = 1; i < n; i++) {
		d = 1 + (2*i)%n;
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		for (int j = 0; j < d; j++)
			cout << 'D';
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		cout << '\n';
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	for (int i = 0, d = 1; i < n; i++) {
		if (i < n/2)
			d += 2;
		else
			d -= 2;
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		for (int j = 0; j < d; j++)
			cout << 'D';
		for (int j = 0; j < (n-d)/2; j++)
			cout << '*';
		cout << '\n';
	}
	return 0;
}


#include <iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			if (i <= n / 2)
			{
				if (j >= n / 2 - i && j <= n / 2 + i)
				{
					cout<<'D';
				}
				else
				{
					cout<<'*';
				}
			}
			else
			{
				if (j < i - n / 2 || j >= n - (i - n / 2))
				{
					cout<<'*';
				}
				else
				{
					cout<<'D';
				}
			}
		}
		cout << endl;
	}
}


#include <iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			if (i <= n / 2)
			{
				if (j >= n / 2 - i && j <= n / 2 + i)
				{
					cout<<'D';
				}
				else
				{
					cout<<'*';
				}
			}
			else
			{
				if (j < i - n / 2 || j >= n - (i - n / 2))
				{
					cout<<'*';
				}
				else
				{
					cout<<'D';
				}
			}
		}
		cout << endl;
	}


#include<bits/stdc++.h>
#define ll long long
#define MAX 1000003
#define V vector<int>
#define pii pair<int,int>
#define VP vector< pii >
#define MOD 1000000007
#define mp make_pair
#define pb push_back
#define rep(i,a,b) for(int (i) = (a); (i) < (b); (i)++)
#define all(v) (v).begin(),(v).end()
#define S(x) scanf("%d",&(x))
#define S2(x,y) scanf("%d%d",&(x),&(y))
#define SL(x) scanf("%lld",&(x))
#define SL2(x) scanf("%lld%lld",&(x),&(y))
#define P(x) printf("%d\n",(x))
#define FF first
#define SS second
using namespace std;

int main(){
 int n,k1,k2;
 cin>>n;
 k1 = 1, k2 = (n-1)/2;
 rep(i,0,(n-1)/2){
 	rep(j,0,k2){
 		cout<< "*";
 	}
 	rep(k,0,k1){
 		cout<< "d";
 	}
 	rep(l,0,k2){
 		cout<< "*";
 	}
   k1+=2;
   k2-=1;
   cout<< endl;
 }

 rep(i,0,n){
 	cout<< "d";
 }
 cout<< endl;

 rep(i,0,(n-1)/2){
   k1-=2;
   k2+=1;
 	rep(j,0,k2){
 		cout<< "*";
 	}
 	rep(k,0,k1){
 		cout<< "d";
 	}
 	rep(l,0,k2){
 		cout<< "*";
 	}

   cout<< endl;
 }

}

/*
Code by :
Rishabh Patel
Integrated Post Graduation (IPG)
Indian Institute of Information Technology and Management, Gwalior (ABV-IIITM Gwalior)
In order to understand recursion, one must first understand recursion.
*/