#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void smin(T &a, U b) {
  if (a > b) a = b;
}
template <typename T, typename U>
inline void smax(T &a, U b) {
  if (a < b) a = b;
}
int power(int a, int b, int m, int ans = 1) {
  for (; b; b >>= 1, a = 1LL * a * a % m)
    if (b & 1) ans = 1LL * ans * a % m;
  return ans;
}
int dst[3010][3010], vst[3010][3010], VST[3010];
int n, m;
pair<int, int> f[3010][3010], g[3010][3010];
vector<int> adj[3010];
queue<int> q;
void bfs(int u) {
  for (int i = 1; i <= n; i++) VST[i] = 0;
  dst[u][u] = 0;
  q.push(u);
  VST[u] = 1;
  while (!q.empty()) {
    int first = q.front();
    q.pop();
    for (int i = 0; i < adj[first].size(); i++) {
      int second = adj[first][i];
      if (VST[second]) continue;
      VST[second] = 1;
      dst[u][second] = dst[u][first] + 1;
      q.push(second);
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  while (m--) {
    int u, v;
    scanf("%d%d", &u, &v);
    if (vst[u][v]) continue;
    adj[u].push_back(v);
    vst[u][v] = 1;
  }
  for (int i = 1; i <= n; i++) bfs(i);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      f[i][j] = pair<int, int>(dst[i][j], j);
      g[i][j] = pair<int, int>(dst[j][i], j);
    }
    sort(f[i] + 1, f[i] + n + 1);
    sort(g[i] + 1, g[i] + n + 1);
  }
  int p, q, r, s;
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i == j) continue;
      if (dst[i][j] == 0) continue;
      for (int k = n - 2; k <= n; k++) {
        for (int l = n - 2; l <= n; l++) {
          int ii = f[j][k].second;
          int jj = g[i][l].second;
          if (dst[j][ii] == 0 || dst[jj][i] == 0) continue;
          if (i == ii || j == jj || ii == jj || i == jj || j == ii) continue;
          int res = dst[jj][i] + dst[i][j] + dst[j][ii];
          if (res > ans) {
            p = jj;
            q = i;
            r = j;
            s = ii;
            ans = res;
            continue;
          }
        }
      }
    }
  }
  printf("%d %d %d %d", p, q, r, s);
  return 0;
}
