Vova计划乘火车去参加会议。 最初,列车在点1,路径的目的地点是点L.列车的速度是每分钟1个长度单位(即在第一分钟,火车在第1点,第二分钟) - 在第2点等等)。
路上有灯笼。 它们被放置在具有可被v整除的坐标的点处(即,第一个灯点位于点v,第二个点位于点2v,依此类推)。
还有一条直立列车占据了从l到r的所有点。
如果p可被v整除,并且在该位置没有站立列车(p∉[l; r]),Vova可以在点p处看到灯笼。 因此,如果带灯笼的点是站立列车所覆盖的点之一,那么Vova就看不到这个灯笼了。
你的问题是Vova在路径中会看到的灯笼数量。 Vova计划参加不同的会议,因此您应该回答独立的查询。
Input
输入的第一行包含一个整数t(1≤t≤104) - 查询数。
然后是t行。 第i行包含四个整数Li,vi,li,ri(1≤L,v≤1e9,1≤l≤r≤L) - 第i个路径的目标点,灯笼外观的周期和 站立列车占用的段。
Output
打印t行。 第i行应该包含一个整数 - 第i个查询的答案。
Example
Input
4 10 2 3 7 100 51 51 51 1234 1 100 199 1000000000 1 1 1000000000
Output
3 0 1134 0
Note
对于第一个示例查询,答案是3.在位置2,4,6,8和10处有灯笼,但由于站立列车,Vova没有看到位置4和6的灯笼。
对于第二个示例查询,答案是0,因为唯一的灯笼位于点51处,此时还有一个站立列车。
对于第三个示例查询,答案是1134,因为有1234个灯笼,但是Vova没有看到从位置100到位置199的灯笼。
对于第四个示例查询,答案为0,因为站立列车覆盖整个路径。
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int x,y,z,w;
for(int i=0;i<n;i++)
{
long long ans;
cin>>x>>y>>z>>w;
if(z%y==0)
z--;
ans=x/y+z/y-w/y;
if(y==z==w)
ans--;
cout<<ans<<endl;
}
return 0;
}