#CF2102A. 晚餐时间

晚餐时间


题目描述

时间限制11
内存限制256256 兆字节

给定四个整数 n,m,p,qn, m, p, q,判断是否存在一个整数数组 a1,a2,,ana_1, a_2, \ldots, a_n(元素可以为负数),使其满足以下条件:

  • 数组中所有元素之和等于 mm
a1+a2++an=ma_1 + a_2 + \cdots + a_n = m
  • pp 个连续元素之和等于 qq
$$a_i + a_{i+1} + \cdots + a_{i+p-1} = q, \quad \text{对所有 } 1 \leq i \leq n - p + 1 $$

输入格式

每个测试点包含多个测试用例。第一行包含一个整数 tt1t1041 \leq t \leq 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例只有一行,包含四个整数 n,m,p,qn, m, p, q1pn1001 \leq p \leq n \leq 1001q,m1001 \leq q, m \leq 100)—— 分别表示数组长度、数组元素总和、子段长度和子段总和。


输出格式

对于每个测试用例,如果存在满足条件的数组,输出 "YES",否则输出 "NO"

你可以以任意大小写输出 "YES""NO"(例如,"YES""yes""Yes" 都会被认为是正确的)。


示例

输入

5
3 2 2 1
1 1 1 1
5 4 2 3
10 7 5 2
4 4 1 3

输出

YES
YES
YES
NO
NO

说明

  • 第一个测试用例:n=3n = 3m=2m = 2p=2p = 2q=1q = 1
    一个满足条件的数组是 [1,0,1][1, 0, 1]
    验证:

    a1+a2+a3=1+0+1=2=ma_1 + a_2 + a_3 = 1 + 0 + 1 = 2 = m a1+a2=1+0=1=qa_1 + a_2 = 1 + 0 = 1 = q a2+a3=0+1=1=qa_2 + a_3 = 0 + 1 = 1 = q
  • 第二个测试用例:n=1n = 1m=1m = 1p=1p = 1q=1q = 1
    唯一的数组是 [1][1],显然满足条件。

  • 第三个测试用例:n=5n = 5m=4m = 4p=2p = 2q=3q = 3
    一个满足条件的数组是 [2,5,2,5,2][-2, 5, -2, 5, -2]
    验证:

    2+5+(2)+5+(2)=4=m-2 + 5 + (-2) + 5 + (-2) = 4 = m

    每连续 22 个元素之和:

    $$-2 + 5 = 3 = q,\quad 5 + (-2) = 3 = q,\quad -2 + 5 = 3 = q,\quad 5 + (-2) = 3 = q $$
  • 第四个测试用例:n=10n = 10m=7m = 7p=5p = 5q=2q = 2
    可以证明不存在满足条件的数组。

  • 第五个测试用例:n=4n = 4m=4m = 4p=1p = 1q=3q = 3
    可以证明不存在满足条件的数组(因为 p=1p = 1 时每个元素都等于 q=3q = 3,总和会是 4×3=124 \times 3 = 12,不等于 m=4m = 4)。