Умный Бобер недавно увлекся новой игрой в слова. Ее суть состоит в следующем: подсчитать количество различных хороших подстрок некоторой строки s. Для определения того, является ли строка хорошей, в игре используются правила. Их всего n штук. Каждое правило описывается тройкой (p, l, r), где p — строка, а l и r (l ≤ r) — целые числа. Будем говорить, что строка t удовлетворяет правилу (p, l, r), если количество вхождений строки t в строку p лежит в пределах от l до r включительно. Например, строка «ab», удовлетворяет правилам («ab», 1, 2) и («aab», 0, 1), но не удовлетворяет правилам («cd», 1, 2) и («abab», 0, 1).
Подстрокой s[l... r] (1 ≤ l ≤ r ≤ |s|) строки s = s1s2... s|s| (где |s| — длина строки s) называется строка slsl + 1... sr.
Будем считать, что количество вхождений строки t в строку p — это количество пар целых чисел l, r (1 ≤ l ≤ r ≤ |p|) таких, что p[l... r] = t.
Будем говорить, что строка t является хорошей, если она удовлетворяет всем n правилам. Умный Бобер просит вас помочь ему в написании программы, которая будет вычислять количество различных хороших подстрок строки s. Две подстроки s[x... y] и s[z... w] считаются различными, если s[x... y] ≠ s[z... w].
Примечание
В первом тестовом примере подходят подстроки «aab», «ab» и «b».
Во втором тестовом примере «e» и «t».