Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal representation contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.

Petya has *n* number segments [*l*<sub class="lower-index">1</sub>; *r*<sub class="lower-index">1</sub>], [*l*<sub class="lower-index">2</sub>; *r*<sub class="lower-index">2</sub>], ..., [*l*<sub class="lower-index">*n*</sub>; *r*<sub class="lower-index">*n*</sub>]. During one move Petya can take any segment (let it be segment number *i*) and replace it with segment [*l*<sub class="lower-index">*i*</sub> + 1; *r*<sub class="lower-index">*i*</sub> + 1] or [*l*<sub class="lower-index">*i*</sub> - 1; *r*<sub class="lower-index">*i*</sub> - 1]. In other words, during one move Petya can shift any segment to the left or to the right by a unit distance. Petya calls a number full if it belongs to each segment. That is, number *x* is full if for any *i* (1 ≤ *i* ≤ *n*) the condition *l*<sub class="lower-index">*i*</sub> ≤ *x* ≤ *r*<sub class="lower-index">*i*</sub> is fulfilled.

Petya makes no more than *k* moves. After that he counts the quantity of full lucky numbers. Find the maximal quantity that he can get.
The first line contains two integers *n* and *k* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>, 1 ≤ *k* ≤ 10<sup class="upper-index">18</sup>) — the number of segments and the maximum number of moves. Next *n* lines contain pairs of integers *l*<sub class="lower-index">*i*</sub> and *r*<sub class="lower-index">*i*</sub> (1 ≤ *l*<sub class="lower-index">*i*</sub> ≤ *r*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">18</sup>).

Please do not use the %lld specificator to read or write 64-bit integers in С++. It is preferred to use the %I64d specificator.
def update(a,l,r,val):
    for i in range(l,r):
        a[i] += val
    return a
def S(x):
    while x:
        if x % 10 != 4 and x % 10 != 7:
            return False
        x //= 10
    return True
def count(a,l,r):
    cnt = 0
    for i in range(l,r):
        if S(a[i]):
            cnt += 1
    return cnt
            
n,m = map(int,input().split())
a = list(map(int,input().split()))
while m:
    s = list(map(str,input().split()))
    if s[0] == 'count':
        l = int(s[-2])
        r = int(s[-1])
        print(count(a,l-1,r))
    else:
        l = int(s[-3])
        r = int(s[-2])
        val = int(s[-1])
        update(a, l-1, r, val)
    print(a)
    m -= 1