#include <bits/stdc++.h>
using namespace std;
const int NMAX = 100000 + 1;
int n;
char s[NMAX];
int d[NMAX];
bool viz[NMAX];
void citeste() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> s[i];
  for (int i = 1; i <= n; i++) cin >> d[i];
}
bool e_finit() {
  int poz_crt, poz_urm;
  poz_crt = 1;
  while (true) {
    viz[poz_crt] = true;
    if (s[poz_crt] == '<')
      poz_urm = poz_crt - d[poz_crt];
    else
      poz_urm = poz_crt + d[poz_crt];
    if (poz_urm < 1) return true;
    if (poz_urm > n) return true;
    if (viz[poz_urm]) return false;
    poz_crt = poz_urm;
  }
  return true;
}
int main() {
  citeste();
  if (e_finit())
    cout << "FINITE\n";
  else
    cout << "INFINITE\n";
  return 0;
}
