小红打游戏
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红正在打游戏。游戏中有两种材料 \texttt{A}\texttt{B},现在他需要至少 x 份材料 \texttt{A}至少 y 份材料 \texttt{B}。游戏中有 n 个关卡,小红可以花费 c_i 点体力游玩第 i 个关卡并获得 a_i 份材料 \texttt{A}b_i 份材料 \texttt{B}。这 n 个关卡中有 k 个限定关卡,小红可以游玩任意次普通关卡,但每个限定关卡最多只能游玩一次。
\hspace{15pt}小红想知道,要达成他的目标最少需要花费多少点体力?如果他永远无法达成目标,请输出 \texttt{-1}

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 2\times10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入两个整数 n, k\left(1 \leqq k \leqq n \leqq 10 \right)
\hspace{15pt}第二行输入两个整数 x,y\left(1 \leqq x, y \leqq 1000 \right)
\hspace{15pt}之后的 n 行,每行输入三个整数 a_i, b_i, c_i\left( 0 \leqq a_i, b_i \leqq 1000,1 \leqq c_i \leqq 10^9\right) 代表第 i 个关卡的数值,其中前 k 个为限定关卡。

\hspace{15pt}除此之外,保证单个测试文件的 x\times y 之和不超过 10^6

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。

\hspace{15pt}如果小红永远无法达成目标,请输出 \texttt{-1};否则输出一个整数,代表所需的最小体力。
示例1

输入

复制
3
2 1
10 10
2 2 1
1 1 10
1 1
2 1
1 1 1
1 1
1 1
10 10 1

输出

复制
81
-1
1

说明

\hspace{15pt}对于第一组数据,最优的选择为游玩一次第 1 关,游玩 8 次第二关,可以证明不存在更好的游玩方式。