#include <bits/stdc++.h>
using namespace std;
int visitar(vector<vector<int>>& grafo, int n, int ultimo, int atual,
            int nciclos) {
  int i;
  if (grafo[atual][atual] == 1) {
    nciclos++;
    return nciclos;
  }
  grafo[atual][atual] = 1;
  for (i = 1; i <= n; i++) {
    if (i != atual && i != ultimo && grafo[atual][i] == 1) {
      nciclos = visitar(grafo, n, atual, i, nciclos);
    }
  }
  return nciclos;
}
int main() {
  int n, m, v_inicial, v_final, conexo;
  int i, j, nciclos = 0;
  cin >> n >> m;
  vector<vector<int>> grafo;
  vector<int> temp;
  for (i = 0; i <= n; i++) {
    vector<int> temp;
    for (j = 0; j <= n; j++) {
      temp.push_back(0);
    }
    grafo.push_back(temp);
  }
  for (i = 0; i < m; i++) {
    cin >> v_inicial >> v_final;
    grafo[v_inicial][v_final] = 1;
    grafo[v_final][v_inicial] = 1;
  }
  nciclos = visitar(grafo, n, 1, 1, 0);
  nciclos = nciclos / 2;
  conexo = 1;
  for (i = 1; i <= n; i++) {
    if (grafo[i][i] != 1) {
      conexo = 0;
    }
  }
  if (nciclos == 1 && conexo == 1) {
    cout << "FHTAGN!";
  } else {
    cout << "NO";
  }
}
