만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

화학

시간 제한1초메모리 제한1024 MB

요약
각 1나노리터씩 든 시험관 n개가 있을 때, 부피가 같은 시험관끼리만 부어서 1번 시험관에 정확히 k나노리터를 남기는 방법을 찾습니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
구현, 수학
정답자
아직 제출이 없습니다

문제

Vasya는 화학 수업을 듣고 있다. 이번 학기에 그의 조는 건조 액체를 공부하고 있다. 액체 혼합 실험에서 Vasya는 산소 산화물(oxygen oxide)을 받았다. 이 물질은 섞은 뒤 결과를 예측할 수 없다. 이 액체는 1:1 비율로 섞었을 때만 안정하다.

Vasya에게는 시험관이 nn개 있고, 각 시험관에는 산소 산화물이 1 나노리터씩 들어 있다. 이 산화물의 성질 때문에 Vasya는 A번 시험관의 액체를 B번 시험관에 붓되, B번 시험관의 부피가 두 배가 되도록 붓는다. 실험을 성공시키려면 시험관 중 하나에 산화물이 정확히 kk 나노리터 있어야 한다. 그가 이 실험을 성공하도록 도와라.

입력

첫 줄에 정수 nn과 kk가 주어진다 (1≤n≤1000001 ≤ n ≤ 100000, 1≤k≤n1 ≤ k ≤ n).

출력

첫 번째 시험관에 산화물이 정확히 kk 나노리터 남도록 하는 붓기 순서를 출력한다.

첫 줄에 붓는 횟수 mm(0≤m≤3n0 ≤ m ≤ 3n)을 출력한다. 이어서 mm개의 줄에 정수 aa와 bb(1≤a,b≤n1 ≤ a, b ≤ n)를 출력한다. 이는 aa번 시험관의 산화물을 bb번 시험관에 붓는다는 뜻이다.

그런 순서가 없으면 -1을 출력한다. 해가 여럿이면 그중 아무것이나 출력해도 된다. 순서가 존재한다면 붓는 횟수가 3n3n 이하인 순서가 존재함이 보장된다.

예제2

  1. 예제 1

    입력
    5 3
    
    예상 출력
    4
    2 1
    4 3
    3 1
    1 5
    
  2. 예제 2

    입력
    5 5
    
    예상 출력
    -1