二维动点
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

一个二维平面上有n个点(a_i,b_i),在一次移动中,你可以选择一个不和当前所在位置重叠的点,然后可以移动到当前所在位置和选择的点构成的直线上的任何一个位置;每次询问一个点(x,y),求出从(0,0)到达(x,y)所需要的最少移动次数,无解输出-1

输入描述:

第一行为两个数n,q
接下来n行,每行两个数a_i,b_i,表示一个点的坐标
接下来q行,每行两个数x_i,y_i,表示询问一个目标点

输出描述:

共q行,每行一个整数,表示到达目标点所需要的的最少移动次数,无解输出-1
示例1

输入

复制
2 3
1 2
2 1
3 3
2 4
2 2

输出

复制
3
1
2

备注: