由于我不会使用正则表达式,所以我只能使用基础 Python 语法 QwQ。

[input().split()for _ in range(int(input()))] 是个列表生成器,效果是产生一个长度为 $T$ 的列表,列表的元素是以每一行以空格为分割符的字符串列表。
for(a,b,c,d)in[] 可以用 $a,b,c,d$ 来复制列表中每个元素的第 $0,1,2,3$ 个元素,非常方便。
判断 $a_0=b_0=\texttt{y},c=\texttt{ding},d=\texttt{zhen}$ 可以使用 $4$ 个 if 进行判断,但是那样子太长了。想到把 $4$ 个字符串放在一起去比较,可以写出 a[0]+b[0]+c+d=="yydingzhen" 这样的语句,可是原题并没有保证 $c,d$ 的长度,也就是说出现 $c=\texttt{dingz},d=\texttt{hen}$ 这种情况也会被判过,这可不行哟,所以在中间加个空格隔开就行了。
一般来说 Python 的三目是 T if cond else F(若 condTrue 返回 T,否则返回 F),但是大多数情况下都可以采用 cond and T or F 来代替。原理是 and 的返回值是后者,而 or 的返回值是前者。什么时候会出现问题呢?当 T0(零)()(空元组)[](空列表){}(空字典)None(空无类型)时,这些会被 Python 当作 False 处理,此时 cond and T 永远为 False,这样只会返回 F了。

for(a,b,c,d)in[input().split()for _ in range(int(input()))]:print(a[0]+c+" "+b[0]+d=="yding yzhen"and"Yes"or"No")