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

Petya has an array a of n integers. The numbers in the array are numbered starting from 1. Unfortunately, Petya has been misbehaving and so, his parents don't allow him play with arrays that have many lucky numbers. It is guaranteed that no more than 1000 elements in the array a are lucky numbers. 

Petya needs to find the number of pairs of non-intersecting segments [l1;r1] and [l2;r2] (1 ≤ l1 ≤ r1 < l2 ≤ r2 ≤ n, all four numbers are integers) such that there's no such lucky number that occurs simultaneously in the subarray a[l1..r1] and in the subarray a[l2..r2]. Help Petya count the number of such pairs.

Input

The first line contains an integer n (2 ≤ n ≤ 105) — the size of the array a. The second line contains n space-separated integers ai (1 ≤ ai ≤ 109) — array a. It is guaranteed that no more than 1000 elements in the array a are lucky numbers. 

Output

On the single line print the only number — the answer to the problem.

Please do not use the %lld specificator to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specificator.

Examples

Input

4
1 4 2 4


Output

9


Input

2
4 7


Output

1


Input

4
4 4 7 7


Output

9

Note

The subarray a[l..r] is an array that consists of elements al, al + 1, ..., ar.

In the first sample there are 9 possible pairs that satisfy the condition: [1, 1] and [2, 2], [1, 1] and [2, 3], [1, 1] and [2, 4], [1, 1] and [3, 3], [1, 1] and [3, 4], [1, 1] and [4, 4], [1, 2] and [3, 3], [2, 2] and [3, 3], [3, 3] and [4, 4].

In the second sample there is only one pair of segments — [1;1] and [2;2] and it satisfies the condition.
#include <bits/stdc++.h>
using namespace std;
map<int, vector<int> > mm;
int a[100005];
int li[100005];
long long ans;
int n, m;
int islucky(int x) {
  for (; x > 0; x /= 10)
    if ((x % 10) != 4 && (x % 10) != 7) return false;
  return true;
}
long long work() {
  int i, j, k, up_k, x;
  long long sum;
  set<int> visit, seg;
  set<int>::iterator itL, it, itR;
  for (i = 1; i <= m; ++i) {
    visit.clear();
    seg.clear();
    seg.insert(li[i]);
    seg.insert(n + 1);
    sum = 0;
    for (j = i; j > 0; --j) {
      if (visit.find(a[li[j]]) == visit.end()) {
        x = a[li[j]];
        visit.insert(x);
        vector<int> que = mm[x];
        up_k = que.size();
        for (k = 0; k < up_k; ++k)
          if (que[k] > li[i]) {
            it = seg.insert(que[k]).first;
            itL = itR = it;
            itL--, itR++;
            if (itL == seg.begin()) {
              sum += (long long)(li[i + 1] - li[i]) * (li[i + 1] - li[i] - 1) /
                     2 * (*itR - *it);
              sum += (long long)(li[i + 1] - li[i]) * (*it - li[i + 1] + 1) *
                     (*itR - *it);
            } else
              sum +=
                  (long long)(li[i + 1] - li[i]) * (*it - *itL) * (*itR - *it);
          }
      }
      ans -= (long long)(li[j] - li[j - 1]) * sum;
    }
  }
  return ans;
}
int main() {
  int i, j;
  scanf("%d", &n);
  long long nn[4] = {n - 1, n, n + 1, n + 2};
  for (i = 4; i >= 2; --i)
    for (j = 0; j < 4; ++j)
      if (nn[j] % i == 0) {
        nn[j] /= i;
        break;
      }
  ans = nn[0] * nn[1] * nn[2] * nn[3];
  for (i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    if (islucky(a[i])) {
      mm[a[i]].push_back(i);
      li[++m] = i;
    }
  }
  printf("%I64d\n", work());
  return 0;
}
