Jamie loves sleeping. One day, he decides that he needs to wake up at exactly hh: mm. However, he hates waking up, so he wants to make waking up less painful by setting the alarm at a lucky time. He will then press the snooze button every x minutes until hh: mm is reached, and only then he will wake up. He wants to know what is the smallest number of times he needs to press the snooze button.

A time is considered lucky if it contains a digit '7'. For example, 13: 07 and 17: 27 are lucky, while 00: 48 and 21: 34 are not lucky.

Note that it is not necessary that the time set for the alarm and the wake-up time are on the same day. It is guaranteed that there is a lucky time Jamie can set so that he can wake at hh: mm.

Formally, find the smallest possible non-negative integer y such that the time representation of the time x·y minutes before hh: mm contains the digit '7'.

Jamie uses 24-hours clock, so after 23: 59 comes 00: 00.

Input

The first line contains a single integer x (1 ≤ x ≤ 60).

The second line contains two two-digit integers, hh and mm (00 ≤ hh ≤ 23, 00 ≤ mm ≤ 59).

Output

Print the minimum number of times he needs to press the button.

Examples

Input

3
11 23


Output

2


Input

5
01 07


Output

0

Note

In the first sample, Jamie needs to wake up at 11:23. So, he can set his alarm at 11:17. He would press the snooze button when the alarm rings at 11:17 and at 11:20.

In the second sample, Jamie can set his alarm at exactly at 01:07 which is lucky.
#include <bits/stdc++.h>
using namespace std;
long long a[10001000], b[2000010], d[2000010], e[2000010], x = 0, y = 0, z = 0,
                                                           c[2000][2010];
double an[2000], S, D;
long long modulo(long long a, long long b, long long n) {
  long long x = 1, y = a;
  while (b > 0) {
    if (b % 2 == 1) {
      x = (x * y) % n;
    }
    y = (y * y) % n;
    b /= 2;
  }
  return x % n;
}
vector<long long> g[100001];
struct node {
  mutable long long v, i, n;
  node() {}
  node(long long x, long long y, long long z = 0) {
    v = x;
    i = y;
    n = z;
  }
  bool operator<(const node& y) const {
    if (v == y.v)
      if (i != y.i)
        return i < y.i;
      else
        return n < y.n;
    else
      return v < y.v;
  }
};
ostream& operator<<(ostream& o, node x) {
  o << '(' << x.i << ',' << x.v;
  if (x.n != 0) o << ',' << x.n;
  o << ")\t";
}
bool cmp(node x, node y) {
  if (x.i != y.i)
    return x.i < y.i;
  else if (x.v != y.v)
    return x.v > y.v;
  else
    return x.n < y.n;
}
long long vis[100001] = {-1};
long long dfs(long long i) {
  if (vis[i] >= 0) return vis[i];
  vis[i] = 0;
  cout << i << endl;
  for (long long j = 0; j < g[i].size(); j++) {
    cout << g[i][j] << ' ';
    if (a[g[i][j]] == 0 && a[i] == 1)
      vis[i] = max(vis[i], dfs(g[i][j]));
    else
      vis[i] = max(vis[i], dfs(g[i][j]) + 1);
  }
  cout << endl << ' ' << vis[i] << endl;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(NULL);
  long long t, j, r, q, aa, u, s1, s2, s3, v, bb, l, h, k, w, c1, v1, v2, z, c2,
      n1, nn, x1, hx, hy, tx, ty, n2, s, maxi, m, i, n, L, R, p, m1, N;
  string st[100001], ans, st1, st2;
  char str[1000001], ch1[1000100], ch, ch2, ch3, *si;
  t = 1;
  while (t--) {
    cin >> x;
    cin >> h >> m;
    s = 0;
    while (1)
      if (h % 10 == 7 || m % 10 == 7) {
        cout << s << endl;
        return 0;
      } else {
        s++;
        m -= x;
        if (m < 0) m += 60, h--;
        if (h < 0) h += 24;
      }
  }
}
