// 构建二纬数据
#include <iostream>
#include <iterator>
#include <utility>
using namespace std;
#include <map>
#include <algorithm>
#include <vector>
#include <utility>

int main() {
    int n, m, k, s, linc, cnt = 0;
    cin >> n >> m;
    int t = 1.5 * m;
    cnt = t;
    multimap<int, int> mp;
    vector<vector<int>> v(10000, vector<int>(101));
    while (cin >> k >> s) { // 注意 while 处理多个 case
        v[s].push_back(k);
        mp.insert(make_pair(s, k));
    }
    for (auto it = mp.rbegin(); it != mp.rend(); it++) {
        t--;
        if (linc == it->first) {
            cnt++;
        }
        if (t == 0) {
            linc = it->first;
        }
    }
    cout << linc << " " << cnt << endl;
    // for (auto it = mp.rbegin(); it != mp.rend(); it++) {
    //     if (it->first >= linc) {
    //         cout << it->second << " " << it->first << endl;
    //     }
    // }
    for (int i = 101; i >= linc; i--) {
        for (int j = 0; j < v[i].size(); j++) {
            sort(v[i].begin(), v[i].end());
            if (v[i][j] != 0) {
                cout << v[i][j] << " " << i << endl;
            }
        }
    }
}
// 64 位输出请用 printf("%lld")