1064
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <math.h>
#include <limits.h>
 
using namespace std;
 
// Datatypes
typedef vector<int> vi; 
typedef vector<string> vs;
typedef vector<vi> vvi; 
typedef pair<int,int> ii; 
typedef long long ll;
typedef long double ld;
 
// Define
#define sz(a)             int((a).size()) 
#define pb                push_back 
#define all(c)            (c).begin(),(c).end() 
#define present(c,x)      ((c).find(x) != (c).end()) 
#define cpresent(c,x)     (find(all(c),x) != (c).end()) 
#define FOR(_i,_n)        for(int (_i) = 0; (_i) < (_n); (_i)++)
#define mp                make_pair
 
#define MAXN 10000
 
int A[MAXN];
int N;
 
int BinarySearch(int x)
{
  int p, q, i, L;
 
  p = 0;   /* Left border of the search  */
  q = N-1; /* Right border of the search */
  L = 0;   /* Comparison counter         */
  while (p <= q) {
    i = (p + q) / 2;
    ++L;
    if (A[i] == x) 
    {
      return L;
    }
 
    if (x < A[i])
      q = i - 1;
    else
      p = i + 1;
  }
}
 
int main(void)
{
    int k,l;
    int a,b;
    vector<ii> v;
 
    cin >> k >> l;
 
    FOR(i,MAXN)
        A[i] = i;
 
    a = -1; b = -1;
    for(int i = k+1; i <= MAXN; i++)
    {
        N = i;
        if(BinarySearch(k) == l)
        {
            if(a == -1)
                a = i;
            else
                b = i;
        }
        else
        {
            if(a != -1)
            {
                if(b == -1) b = a;
                v.pb(mp(a,b));
                a = b = -1;
            }
        }
    }
    if(a != -1)
    {
        if(b == -1) b = a;
        v.pb(mp(a,b));
        a = b = -1;
    }
 
    cout << sz(v) << endl;
    FOR(i,sz(v))
    {
        cout << v[i].first << " " << v[i].second << endl;
    }
    return 0;
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.