#B3990. 通配符匹配

通配符匹配

题目描述

我们称两个字符 a,ba,b 是匹配的,当且仅当 a=ba=b 或 a,ba,b 中至少一个是字符 ?。例如:

  • x 和 x 是匹配的;
  • x 和 ? 是匹配的;
  • ? 和 x 是匹配的;
  • ? 和 ? 是匹配的;
  • 但 x 和 y 不是匹配的。

我们称两个字符串 ss 和 tt 是匹配的,当且仅当 ss 和 tt 长度相同,且对应位置上的字符是匹配的。例如,abc??z 和 a?cx?? 是匹配的。

给定两个字符串 s,ts,t,规定 s(l,r)s(l,r) 表示 ss 的第 ll 个字符到第 rr 个字符组成的字符串(1≤l≤r≤∣s∣1\leq l\leq r\leq |s|)。例如:若 s=luogus=\texttt{luogu},则 s(2,4)=uogs(2,4)=\texttt{uog}。

现在,请你求出所有的 l,rl,r,使得 tt 和 s(l,r)s(l,r) 匹配。

输入格式

第一行是一个字符串 ss。

第二行是一个字符串 tt。

输出格式

输出若干行,每行两个整数,表示一组 l,rl,r。

按 ll 从小到大的顺序输出。可以证明,按这个顺序进行输出的方案是唯一的。

样例 #1

样例输入 #1

luogu
uog

样例输出 #1

2 4

样例 #2

样例输入 #2

aabbcc
b??

样例输出 #2

3 5
4 6

样例 #3

样例输入 #3

a?b?c?
bcc

样例输出 #3

3 5
4 6

样例 #4

样例输入 #4

a?b?c?
b??

样例输出 #4

2 4
3 5
4 6

提示

数据规模与约定

对全部的测试数据,保证 1≤∣s∣,∣t∣≤1031\leq |s|,|t|\leq 10^3,∣t∣≤∣s∣|t|\le |s|,s,ts,t 中只含小写英文字母和字符 ?。