充Q币
题号:NC54593
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

zzy,zzf训练时间不饱和,偷偷玩起了欢乐斗地主。 由于两人都是zz,所以很快就输光了所有的欢乐豆。
充值使你变强!zzf的头脑回荡起这句话。于是他决定充值S个Q币(一元对应一Q币)用来获得欢乐豆。
已知他有a个面值为n元的硬币,b个面值为1元的硬币,由于zzf比较穷所以zzf不希望充值多余的Q币。
于是他像你求助他是否可以准确的充值S个Q币,而不造成多余的Q币剩余。

输入描述:

输入的第一项只包含一个整数 -测试样例的数量。接下来T组测试样例。
接下来T行,每一行四个整数 ――面值为x硬币的数量,面值为1的硬币数量,数量为a的硬币面值大小,以及需要充值的Q币数量。

输出描述:

如果zzf可以准确的充值n个Q币请输出"YES",否则请输出"NO";
示例1

输入

复制
4
1 2 3 4
1 2 3 6
5 2 6 27
3 3 5 18

输出

复制
YES
NO
NO
YES

说明

对于第一组测试样例, zzf可以选择1个面值为3的硬币和1个面值为1的硬币,来充值4个Q币。
对于第二组和第三组测试样例,zzf无论怎么选择都无法获得准确的S个Q币。
对于第四组样例,zzf可以选择3个面值为5的硬币,以及3个面值为1的硬币,来充值18个Q币。