유스타스(Justas)는 프로그래밍 대회에 자주 참가합니다. 문제를 푸는 데 시간을 많이 쓰다 보니, 그는 이 과정을 자동화하고 싶어졌습니다. 어떤 문제의 테스트를 주면 그 문제를 푸는 프로그램을 대신 찾아 주는 도구를 원하는 것이지요. 유스타스를 도와주세요.
유스타스는 테스트 목록을 줍니다. 여러분은 그 테스트들을 모두 올바르게 처리하는 프로그램을 찾아야 합니다. 각 테스트는 두 정수로 이루어집니다 — 그 테스트의 입력값과 기대되는 결과입니다. 모든 테스트의 입력값은 서로 다릅니다.
유스타스가 사용하는 프로그래밍 언어는 아주 단순합니다. 프로그램에는 변수가 하나뿐이며, 그 변수에는 크기 제한이 없는 음이 아닌 정수가 저장됩니다. 프로그램이 시작될 때 이 변수에는 테스트의 입력값이 들어갑니다. 프로그램은 다음 명령들의 나열로 이루어집니다.
add n — 변수에 n을 더합니다 (0≤n<109).multiply n — 변수에 n을 곱합니다 (0≤n<109).print — 변수의 값과 줄바꿈 문자를 출력합니다.예를 들어 다음 프로그램을 생각해 봅시다.
add 5
multiply 8
print
입력값이 1이면 이 프로그램은 48을 출력하고, 입력값이 25이면 240을 출력합니다.
유스타스는 자신의 풀이가 시간 제한을 넘기지 않기를 바랍니다. 따라서 주어진 모든 테스트를 올바르게 처리하면서 명령 개수가 가장 적은 프로그램을 찾아야 합니다.
첫째 줄에 정수 N — 테스트의 개수가 주어집니다. 이어지는 N개의 줄에는 각각 두 정수 ai와 bi — i번째 테스트의 입력값과 필요한 결과가 주어집니다. 모든 ai는 서로 다릅니다.
모든 테스트를 올바르게 처리하는 가장 짧은 프로그램의 명령 개수 K를 한 줄에 출력하세요 (print 명령도 개수에 포함합니다). 그런 프로그램이 존재하지 않으면 −1을 출력하세요.