d:\Documents\C++\ClassMax.cpp

mail@pastecode.io avatar
unknown
c_cpp
a month ago
24 kB
16
Indexable
Never
#include<bits/stdc++.h>

using namespace std;
using ll = long long;
#define faster() ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);

class INT{
    public:
        void CPP0101();
        void CPP0103();
        void CPP0104();
        void CPP0105();
        void CPP0106();
        void CPP0109();
        void CPP0111();
        void CPP0112();
        void CPP0113();
        void CPP0115();
        void CPP0117();
        void CPP0121();
        void CPP0122();
        void CPP0123();
        void CPP0124();
        void CPP0125();
        void CPP0126();
        void CPP0127();
        void CPP0130();
        void CPP0132();
        void CPP0133();
        void CPP0134();
        void CPP0143();
        void CPP0152();
        void CPP0153();
        void CPP0154();
        void CPP0108();
        void CPP0118();
        void CPP0120();
        void CPP0173();
        void CPP0119();
};

void INT::CPP0101(){
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        cout << 1ll * n * (n + 1) / 2 << endl;
    }
}

void INT::CPP0103(){
    int n; cin >> n;
    double s = 0;
    for(int i = 1; i <= n; i++){
        s += (float)1/i;
    }
    cout << fixed << setprecision(4) << s << endl;
}

ll gt(int x){
    ll gt = 1ll;
    while(x > 1){
        gt *= x;
        x--;
    }
    return gt;
}

void INT::CPP0104(){
    int n; cin >> n;
    long long s = 0;
    for(int i = 1; i <= n; i++){
        s += gt(i);
    }
    cout << s << endl;
}

bool locphat(int n){
    while(n > 0){
        int a = n % 10;
        if(a != 8 && a != 0 && a != 6) return false;
        n /= 10;
    }
    return true;
}

void INT::CPP0105(){
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        if(locphat(n)) cout << "YES\n";
        else cout << "NO\n";
    }
}

bool tn(string s){
    int l = 0, r = s.length() - 1;
    while(l <= r){
        if(s[l] != s[r]) return false;
        l++; r--;
    }
    return true;
}

void INT::CPP0106(){
    int t; cin >> t;
    while(t--){
        string s; cin >> s;
        if(tn(s)) cout << "YES\n";
        else cout << "NO\n";
    }
}

bool socb(int x){
    int cntc = 0, cntl = 0;
    while(x > 0){
        int a = x%10;
        if(a % 2 == 1) cntl++;
        else cntc++;
        x/=10;
    }
    if(cntc == cntl) return true;
    return false;
}

void INT::CPP0109(){
    int n; cin >> n;
    int cnt = 0;
    int l = pow(10,n-1), r = pow(10,n);
    for(int i = l; i < r; i++){
        if(socb(i)){
            cout << i << " ";
            cnt++;
        }
        if(cnt == 10){
            cout << endl;
            cnt = 0;
        }
    }
}

bool solk(string s){
    for(int i = 1; i < s.length(); i++){
        if(abs((s[i] - '0') - (s[i - 1] - '0')) != 1) return false;
    }
    return true;
}

void INT::CPP0111(){
    int t; cin >> t;
    cin.ignore();
    while(t--){
        string s;
        cin >> s;
        if(solk(s)) cout << "YES\n";
        else cout << "NO\n";
    }
}

void INT::CPP0112(){
    int t; cin >> t;
    cin.ignore();
    while(t--){
        double xA, yA, xB, yB;
        cin >> xA >> yA >> xB >> yB;
        double d = sqrt(pow(xA - xB,2) + pow(yA-yB,2));
        cout << fixed << setprecision(4) << d << endl;
    }
}

void INT::CPP0113(){
    int t; cin >> t;
    while(t--){
        int x; cin >> x;
        if(x % 100 == 86) cout << "1\n";
        else cout << "0\n";
    }
}

void solve(int n){
    for(int i = 2; i <= sqrt(n); i++){
        int cnt = 0;
        if(n % i == 0){
            cout << i << " ";
            while(n % i == 0){
                cnt++;
                n /= i;
            }
            cout << cnt << " ";
        }
    }
    if(n != 1) cout << n << " 1";
}

void INT::CPP0115(){
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        solve(n);
        cout << endl;
    }
}

int tongcs(int n){
    int sum = 0;
    while(n > 0){
        sum += n%10;
        n/=10;
    }
    return sum;
}

void INT::CPP0117(){
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        while(n >= 10){
            n = tongcs(n);
        }
        cout << n << endl;
    }
}

ll gcd(ll a, ll b){
    if(b == 0) return a;
    return gcd(b, a%b);
}

ll lcm(ll a, ll b){
    return a / gcd(a, b) * b;
}

void INT::CPP0121(){
    int t; cin >> t;
    while(t--){
        ll a, b;
        cin >> a >> b;
        cout << lcm(a, b) << " " << gcd(a, b) << endl;
    }
}

void INT::CPP0122(){
    int t; cin >> t;
    while(t--){
        ll n; cin >> n;
        ll bcn = 1;
        for(int i = 1; i <= n; i++){
            bcn = lcm(i, bcn);
        }
        cout << bcn << endl;
    }
}

bool nt(ll n){
    if(n < 2) return false;
    for(int i = 2; i <= sqrt(n); i++){
        if(n%i == 0) return false;
    }
    return true;
}

void INT::CPP0123(){
    ll n; cin >> n;
    if(nt(n)) cout << "YES\n";
    else cout << "NO\n";
}

void solve2(int n){
    for(int i = 2; i <= sqrt(n); i++){
        int cnt = 0;
        if(n % i == 0){
            cout << i << " ";
            while(n % i == 0){
                cnt++;
                n /= i;
            }
            cout << cnt << endl;
        }
    }
    if(n != 1) cout << n << " 1";
}

void INT::CPP0124(){
    int n; cin >> n;
    solve2(n);
    cout << endl;
}

void INT::CPP0125(){
    int a, b;
    cin >> a >> b;
    int cnt = 0;
    if(a > b){
        int tmp = a;
        a = b;
        b = tmp;
    }
    for(int i = a; i <= b; i++){
        if(nt(i)){ 
            cout << i << " ";
        }
    }
}

void INT::CPP0126(){
    int t; cin >> t;
    while(t--){
        int a, b;
        cin >> a >> b;
        int cnt = 0;
        if(a > b){
            int tmp = a;
            a = b;
            b = tmp;
        }
        for(int i = a; i <= b; i++){
            if(nt(i)){ 
                cout << i << " ";
            }
        }
        cout << endl;
    }
}

int prime[1000001];
void sieve(){
    for(int i = 0; i <= 1000000; i++){
        prime[i] = 1;
    }
    prime[0] = prime[1] = 0;
    for(int i = 2; i <= 1000; i++){
        if(prime[i]){
            for(int j = i*i; j <= 1000000; j += i){
                prime[j] = 0;
            }
        }
    }
}

void INT::CPP0127(){
    sieve();
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        int ok = 1;
        for(int i = 0, j = n; i <= j;){
            if(prime[i] && prime[j]){
                if(i + j == n){
                    cout << i << " " << j << endl;
                    ok = 0;
                    break;
                }
            }
            i++; j--;
        }
        if(ok) cout << "-1\n";
    }
}

void solve3(ll n){
    for(int i = 2; i <= sqrt(n); i++){
        while(n % i == 0){
            cout << i << " ";
            n /= i;
        }
    }
    if(n != 1) cout << n;
}

void INT::CPP0130(){
    int t; cin >> t;
    while(t--){
        ll n; cin >> n;
        solve3(n);
        cout << endl;
    }
}

ll solve4(ll n){
    ll res;
    for(int i = 2; i <= sqrt(n); i++){
        while(n % i == 0){
            res = i;
            n/= i;
        }
    }
    if(n > 1) res = n;
    return res;
}

void INT::CPP0132(){
    int t; cin >> t;
    while(t--){
        ll n; cin >> n;
        cout << solve4(n) << endl;
    }
}

void INT::CPP0133(){
    int t; cin >> t; 
    while(t--){
        int n; cin >> n;
        for(int i = 2; i <= n; i++){
            if(nt(i)){ 
                cout << i << " ";
            }
        }
        cout << endl;
    }
}

void solve5(int n, int k){
    int cnt = 0;
    for(int i = 2; i <= sqrt(n); i++){
        while(n % i == 0){
            cnt++;
            if(cnt == k){
                cout << i << endl;
                break;
            }
            n/=i;
        }
    }
    if(n != 1){
        cnt++;
        if(cnt == k){
            cout << n << endl;
        }
    }
    if(cnt < k) cout << "-1\n";
}

void INT::CPP0134(){
    int t; cin >> t;
    while(t--){
        int n, k; cin >> n >> k;
        solve5(n,k);
    }
}

ll f[100];
void fibo(){
    f[1] = 1; f[2] = 1;
    for(int i = 3; i < 93; i++){
        f[i] = f[i - 1] + f[i - 2];
    }
}

void INT::CPP0143(){
    int t; cin >> t;
    fibo();
    while(t--){
        int n; cin >> n;
        cout << f[n] << endl;
    }
}

void INT::CPP0152(){
    int t; cin >> t;
    while(t--){
        int a, m;
        cin >> a >> m;
        int ok = 1;
        for(int i = 0; i < m; i++){
            if(a * i % m == 1){
                cout << i << endl;
                ok = 0;
                break;
            }
        }
        if(ok) cout << "-1\n";
    }
}

void INT::CPP0153(){
    int t;
    cin >> t;
    while(t--){
        ll n, k;
        cin >> n >> k;
        int S = 0;
        for(int i = 1; i <= n; i++){
            S += i % k;
        }
        cout << S << endl;
    }
}

void INT::CPP0154(){
    int t;
    cin >> t;
    while(t--){
        ll n, k;
        cin >> n >> k;
        int S = 0;
        for(int i = 1; i <= n; i++){
            S += i % k;
        }
        if(S == k) cout << "1\n";
        else cout << "0\n";
    }
}

bool sot(int n){
    int c = n%10;
    n/=10;
    if(c > n%10)
        while(n > 9){
            int tmp = n%10;
            if(tmp <= (n/10)%10) return false;
            n/=10;
        }
    else if(c < n%10)
        while(n > 9){
            int tmp = n%10;
            if(tmp >= (n/10)%10) return false;
            n/=10;
        }
    else return false;
    return true;
}

void INT::CPP0108(){
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        int cnt = 0;
        int a = pow(10, n-1), b = pow(10, n);
        for(int i = a; i < b; i++){
            if(sot(i) && nt(i)){
                cnt++;
            }
        }
        cout << cnt << endl;
    }
}

bool sosp(int n){
    int cnt = 0;
    for(int i = 2; i <= sqrt(n); i++){
        int idx = 0;
        while(n%i == 0){
            idx++;
            n/=i;
        }
        if(idx > 1) return false;
        if(idx == 1) cnt++;
    }
    if(n != 1) cnt++;
    return cnt == 3;
}

void INT::CPP0118(){
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        if(sosp(n)) cout << "1\n";
        else cout << "0\n";
    }
}

void INT::CPP0120(){
    int t; cin >> t;
    while(t--){
        int m, n, a, b;
        cin >> m >> n >> a >> b;
        int cnt = 0;
        for(int i = m; i <= n; i++){
            if(i % a == 0 || i%b == 0) cnt++;
        }
        cout << cnt << endl;
    }
}

ll solve6(int x, int y, int z, int n){
    ll tmp = lcm(lcm(x,y),z);
    ll idx = (ll)pow(10, n - 1);
    ll res = (idx + tmp - 1)/ tmp * tmp;
    if(res < (ll)pow(10, n)) return res;
    else return -1;
}

void INT::CPP0173(){
    int t; cin >> t;
    while(t--){
        int x, y, z, n;
        cin >> x >> y >> z >> n;
        cout << solve6(x, y, z, n) << endl;
    }
}

void INT::CPP0119(){
    int t;
    cin >> t;
    while(t--){
       int n; cin >> n;
       int cnt = 0;
       for(int i = 1; i <= sqrt(n); i++){
        if(n % i == 0){
            if(i % 2 == 0) cnt++;
            if(i != n/i && n/i % 2 == 0) cnt++;
        }
       }
       cout << cnt << endl;
    }
}

class STRING{
    public:
        void CPP0308();
        void CPP0309();
        void CPP0312();
        void CPP0313();
        void CPP0314();
        void CPP0317();
        void CPP0319();
        void CPP0339();
        void CPP0354();
        void CPP0371();
        void CPP0310();
        void CPP0311();
        void CPP0315();
        void CPP0318();
        void CPP0320();
        void CPP0334();
        void CPP0338();
        void CPP0342();
        void CPP0353();
        void CPP0336();
        void CPP0374();
        void CPP0107();
        void CPP0110();
        void M1C_B21();
};

void STRING::CPP0308(){
    int t;
	cin >> t;
	while(t--){
		string s;
		cin >> s;
		int cnt[100001]={0,0,0};
		for(int i = 0; i < s.length(); i++){
			cnt[(int)s[i]]++;
		}
		for(int i = 0; i < s.length(); i++){
			if(cnt[(int) s[i]] == 1) cout << s[i];
		}
		cout << endl;
	}
}

void STRING::CPP0309(){
    int test;
	cin >> test;
	while(test--){
		cin.ignore();
		string s;
		getline(cin, s);
		int dem = 0;
		for(int i = 0; i < s.length(); i++){
			if(s[i] == ' ' || s[i] == '\n' || s[i] == '\t') dem++;
		}
		cout << dem + 1 << endl;
	}
}

void STRING::CPP0312(){
    int t; cin >> t;
	while(t--){
        string s;
        cin >> s;
        int k; cin >> k;
        set <char> se;
        for(int i = 0 ; i < s.size() ; i++){
            se.insert(s[i]);
        }
        if(k >= (26 - se.size()) && s.size() >=26 ) cout <<"1"<<endl;
        else cout <<"0"<< endl;
    }
}

void STRING::CPP0313(){
    string s;
	getline(cin,s);
	string s1; cin >> s1;
	stringstream ss(s);
	string x;
	while(ss>>x){
		if(x!=s1) cout << x <<' ';
	}
}

void STRING::CPP0314(){
    int t; cin >> t; 
    cin.ignore();
	set <string> se;
	while(t--){
		string s;
		getline(cin,s);
		se.insert(s);
	}
	cout << se.size();
}

bool checkTN(string s){
	int l = 0, r = s.length() - 1;
	while(l <= r){
		if(s[l] != s[r]) return false;
		l++; r--;
	}
	return true;
}

bool check1(string s){
	for(int i = 0; i < s.length(); i++){
		if((s[i] - '0') % 2) return false;
	}
	return true;
}

void STRING::CPP0317(){
    int t;
	cin >> t;
	while(t--){
		string s;
		cin >> s;
		if(checkTN(s) && check1(s)) cout << "YES\n";
		else cout << "NO\n";
	}
}

void STRING::CPP0319(){
    int m, s;
    cin >> m >> s;
    if(s > 9*m || (s == 0 && m > 1)){
        cout << "-1 -1";
        return;
    }
    int tmp = s;
    int max[m] = {0,0,0}, min[m] = {0,0,0};
    for(int i = 0; i < m; i++){
        if(s >= 9){
            max[i] = 9;
            s -= 9;
        }
        else if(s != 0){
            max[i] = s;
            s = 0;
        }
        else break;
    }
    tmp--;
    for(int i = m - 1; i >= 0; i--){
        if(tmp >= 9){
            min[i] = 9;
            tmp -= 9;
        }
        else if(tmp != 0){
            min[i] = tmp;
            tmp = 0;
        }
        else break;
    }
    min[0] += 1;
    for(int i = 0; i < m; i++) cout << min[i];
    cout << " ";
    for(int i = 0; i < m; i++) cout << max[i];
}

void STRING::CPP0339(){
    int t;
	cin >> t;
	while(t--){
		string s;
		cin >> s;
		int cnt = 0;
		for(int i = 0; i < s.length(); i++){
			for(int j = i; j < s.length(); j++){
				if(s[i] == s[j]) cnt++;
			}
		}
		cout << cnt << endl;
    }
}

void STRING::CPP0354(){
    int t; cin >> t;
	while(t--){
		string s; cin >> s;
		int cnt =1;
		for(int i = 0 ; i < s.size()-1 ; i++){
			if(s[i] != s[i+1]){
				cout << s[i] << cnt;
				cnt = 1;
			}
			else if(s[i] == s[i+1])cnt++;
		}
		if(s[s.size()-2] == s[s.size()-1]) cout << s[s.size()-1] << cnt;
		else cout << s[s.size()-1] << "1";
		cout << endl;
	}
}

void STRING::CPP0371(){
    string s; cin >> s;
	for(int i = 0 ; i < s.size() ; i++){
		s[i]=tolower(s[i]);
		if(s[i] != 'a' && s[i] != 'i' && s[i] != 'u' && s[i] != 'o' && s[i] != 'e' && s[i] != 'y') 
		    cout << "." << s[i];
	}
}

long long doi5(string s){
    for(int i = 0; i < s.length(); i++){
        if(s[i] == '6') s[i] = '5';
    }
    return stoll(s);
}

long long doi6(string s){
    for(int i = 0; i < s.length(); i++){
        if(s[i] == '5') s[i] = '6';
    }
    return stoll(s);
}

void STRING::CPP0310(){
    int t; cin >> t;
    cin.ignore();
    while(t--){
        string x1, x2;;
        cin >> x1 >> x2;
        long long min = doi5(x1) + doi5(x2);
        long long max = doi6(x1) + doi6(x2);
        cout << min << " " << max << endl;
    }
}

void STRING::CPP0311(){
    int t; cin >> t;
    cin.ignore();
    while(t--){
        string s;
        cin >> s;
        map<char,int> mp;
        int max_val = 0;
        for(char x : s){
            mp[x]++;
            max_val = max(max_val,mp[x]);
        }
        if(s.length() - max_val >= max_val - 1){
            cout << "1\n";
        }
        else cout << "0\n";
    }
}

string test(string s) {
	for (int i = s.length() - 1; i > 0; i--) {
		if (s[i] < s[i - 1]) {
			int x = i;
			for (int j = i; j < s.length(); j++) {
				if (s[j] > s[x] && s[j] < s[i - 1])
					x = j;
			}
			swap(s[x], s[i-1]);
			return s;
		}
	}
	return "-1";
}

void STRING::CPP0315(){
    int t; cin >> t;
	while (t--) {
		string s; cin >> s;
		cout << test(s) << endl;
	}
}

bool st(string s){
	char tmp = s[5];
	for(int i = 6; i < 11; i++){
		if(s[i] != '.'){
			if(s[i] <= tmp){
				return false;
			}
			else tmp = s[i];
		}
	}
	return true;
}
bool nq(string s){
	for(int i = 6; i < 11; i++){
		if(s[i]!=s[5]) return false;
	}
	return true;
}
bool tn2(string s){
	if(s[9] != s[10]) return false;
	for(int i = 6; i < 8; i++){
		if(s[i] != s[5]) return false;
	}
	return true;
}
bool lp(string s){
	for(int i = 5; i < 11; i++){
		if(s[i] != '.'){
			if(s[i] != '6' && s[i] != '8') return false;
		}
	}
	return true;
}

void STRING::CPP0318(){
    int t; cin >> t;
	while(t--){
		string s;
		cin >>s ;
		if(st(s) || nq(s) || tn2(s) || lp(s)){
			cout << "YES\n";
		}
		else cout << "NO\n";
	}
}

void STRING::CPP0320(){
    int t; cin >> t;
    cin.ignore();
    while(t--){
        string s;
        cin >> s;
        set<char> se;
        int ok = 1;
        for(int i = 0; i < s.length(); i++){
            if(isdigit(s[i]) && s[0] != '0'){
                se.insert(s[i]);
            }
            else{
                cout << "INVALID\n";
                ok = 0;
                break;
            }
        }
        if(ok){
            if(se.size() < 10){
                cout << "NO\n";
            }
            else cout << "YES\n";
        }
    }
}

void STRING::CPP0334(){
    int t; cin >> t;
    cin.ignore();
    while(t--){
        string s;
        cin >> s;
        int sum = 0, res = 0;
        for(int i = 0; i < s.length(); i++){
            if(isdigit(s[i])){
                res = res*10 + (s[i] - '0');
            }
            else{
                sum += res;
                res = 0;
            }
        }
        cout << sum  + res << endl;
    }
}

void STRING::CPP0338(){
    faster();
    int t; cin >> t;
    while(t--){
        string s;
		int k;
		cin >> s >> k;
		set<char> se;
		int cnt = 0;
		for(int i = 0; i < s.length(); i++){
			se.clear();
			for(int j = i; j < s.length() ; j++){
				se.insert(s[j]);
				if(se.size() == k) cnt++;
				else if(se.size() > k ) break;
			}
		}
		cout << cnt << endl;
    }
}

void STRING::CPP0342(){
    int t; cin >> t;
	while(t--){
		map<int, int> mp;
		set<char> x;
		string s; cin >> s;
		int sum = 0;
		for(int i = 0; i < s.size(); i++){ 
			if(isdigit(s[i])) sum+=s[i]-'0';
			else if(isdigit(s[i])==0){
				x.insert(s[i]);
				mp[s[i]]++;
			}
		}
		for(auto i : x){
			while(mp[i]--) cout << i;
		}
		cout << sum << endl;
	}
}

map<char, char> d;

void load() {
	d['A'] = '2'; d['B'] = '2'; d['C'] = '2';
	d['D'] = '3'; d['E'] = '3'; d['F'] = '3';
	d['G'] = '4'; d['H'] = '4'; d['I'] = '4';
	d['J'] = '5'; d['K'] = '5'; d['L'] = '5';
	d['M'] = '6'; d['N'] = '6'; d['O'] = '6';
	d['P'] = '7'; d['Q'] = '7'; d['R'] = '7'; d['S'] = '7';
	d['T'] = '8'; d['U'] = '8'; d['V'] = '8';
	d['W'] = '9'; d['X'] = '9'; d['Y'] = '9'; d['Z'] = '9';
}

bool check2(string s){
	load();
	int l = 0, r = s.length() - 1;
	while(l <= r){
		if(d[s[l]] != d[s[r]]) return false;
		l++; r--;
	}
	return true;
}

void STRING::CPP0353(){
    load();
    int t; cin >> t;
    while(t--){
        string s;
		cin >> s;
		for(int i = 0; i < s.length(); i++){
			s[i] = toupper(s[i]);
		}
		if(check2(s)) cout << "YES\n";
		else cout << "NO\n";
    }
}

void STRING::CPP0336(){
    int t;
    cin >> t;
    while(t--){
        string s1, s2;
        cin >> s1 >> s2;
        int cnt1[256] = {0,0,0}, cnt2[256] = {0,0,0};
        for(char x : s2) cnt2[x]++;
        int ans = INT_MAX, left = 0, cnt = 0, indx = -1;
        for(int i = 0; i < s1.length(); i++){
            cnt1[s1[i]]++;
            if(cnt1[s1[i]] <= cnt2[s1[i]]) ++cnt;
            if(cnt == s2.length()){
                while(cnt1[s1[left]] > cnt2[s1[left]] || cnt2[s1[left]] == 0){
                    if(cnt1[s1[left]] > cnt2[s1[left]]) cnt1[s1[left]]--;
                    left++;
                }
                if(ans > i - left + 1){
                    ans = i - left + 1;
                    indx = left;
                }
            }
        }
        if(indx == -1) cout << "-1\n";
        else cout << s1.substr(indx, ans) << endl;
    }
}

void STRING::CPP0374(){
    string s;
    cin >> s;
    int n = s.length();
    int cnt = 0;
    for(int i = 1; i < n - 1; i++){
        if(s[i - 1] == 'A' && s[i] == 'B' && s[i  + 1] == 'A'){
            s[i] = 'A';
            cnt++;
        }
        else if(s[i - 1] == 'B' && s[i] == 'A' && s[i  + 1] == 'B'){
            s[i] = 'B';
            cnt++;
        }
    }
    for(int i = 0; i < n - 1; i++){
        if(s[i] != s[i+1]) cnt++;
    }
    if(s[n-1] == 'B' && s[n-2] == 'B') cnt++;
    cout << cnt << endl;
}

void STRING::CPP0107(){
    int t; cin >> t;
    while(t--){
        string M101 = "ABBADCCABDCCABD";
        string M102 = "ACCABCDDBBCDDBB";
        string a = "101";
        string ma; cin >> ma;
        char s[20];
        int  cnt = 0;
        for(int i = 0; i < 15; i++){
            cin >> s[i];
        }
        if(ma.compare(a) == 0)
            for(int i = 0; i < 15; i++){
                if(s[i] == M101[i]) cnt++;
            }
        else{
            for(int i = 0; i < 15; i++){
                if(s[i] == M102[i]) cnt++;
            }
        }
        cout << fixed << setprecision(2) << 2.0*cnt/3 << endl;
    }
}

void STRING::CPP0110(){
    int t; cin >> t;
    cin.ignore();
    while(t--){
        string s;
        cin >> s;
        int res;
        for(int i = 0; i < s.length() - 2; i++){
            if(s[i] - '0' == 0 && s[i+1] - '0' == 8 && s[i+2] - '0' == 4) 
                res = i;
        }
        for(int i = 0; i < res; i++){
            cout << s[i];
        }
        for(int i = res + 3; i < s.length(); i++){
            cout << s[i];
        }
        cout << endl;
    }
}

void STRING::M1C_B21(){
    int n;
    cin >> n;
    int a[n];
    map<int,int> mp;
    unordered_map<int,int> ump;
    int max = 0, min = 1e9;
    for(int i = 0; i < n; i++){
        cin >> a[i];
        mp[a[i]]++;
        ump[a[i]]++;
        if(max < mp[a[i]]) max = mp[a[i]];
    }
    for(int i = 0; i < n; i++){
        if(ump[a[i]] != 0){
            cout << a[i] << " " << ump[a[i]] << endl;
            ump[a[i]] = 0;
        }
    }
    cout << endl;
    for(auto x : mp){
        cout << x.first << " " << x.second << endl;
        if(x.second < min) min = x.second;
    }
    cout << endl;
    sort(a, a+n);
    for(int i = n - 1; i >= 0; i--){
        if(mp[a[i]] == max){
            cout << a[i] << endl;
            break;
        }
    }
    for(int i = 0; i < n; i++){
        if(mp[a[i]] == min){
            cout << a[i] << endl;
            break;
        }
    }
}

int main(){
    INT x;
    //x.CPP0101();
    STRING y;
    y.M1C_B21();
}