#include <bits/stdc++.h>
using namespace std;
struct node {
  int v, c;
  node() {}
};
const int maxn = 3005;
node ff[maxn][maxn], gg[maxn][maxn];
bool vis[maxn];
vector<int> G[maxn], F[maxn];
int f[maxn][maxn], g[maxn][maxn];
int n, m;
queue<int> Q;
int Ans[5];
bool cmp(const node& a, const node& b) { return a.c > b.c; }
void find(int s, vector<int> F[], int f[], node ff[]) {
  memset(vis, 0, sizeof(vis));
  while (!Q.empty()) Q.pop();
  for (int i = 1; i <= n; ++i) {
    f[i] = -1;
    ff[i].c = -1;
    ff[i].v = i;
  }
  Q.push(s);
  f[s] = 0;
  ff[s].c = f[s];
  vis[s] = true;
  while (!Q.empty()) {
    int x = Q.front();
    Q.pop();
    for (int i = 0; i < F[x].size(); ++i) {
      int y = F[x][i];
      if (vis[y]) continue;
      f[y] = f[x] + 1;
      ff[y].c = f[y];
      vis[y] = true;
      Q.push(y);
    }
  }
  sort(ff + 1, ff + n + 1, cmp);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    F[x].push_back(y);
    G[y].push_back(x);
  }
  for (int i = 1; i <= n; ++i) {
    find(i, F, f[i], ff[i]);
    find(i, G, g[i], gg[i]);
  }
  int ans = 0;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (i == j || f[i][j] == -1) continue;
      int k = 1;
      while (gg[i][k].v == i || gg[i][k].v == j) ++k;
      int x = gg[i][k].v;
      k = 1;
      while (ff[j][k].v == i || ff[j][k].v == j || ff[j][k].v == x) ++k;
      int y = ff[j][k].v;
      if (g[i][x] != -1 && f[j][y] != -1 && g[i][x] + f[i][j] + f[j][y] > ans) {
        ans = g[i][x] + f[i][j] + f[j][y];
        Ans[1] = x;
        Ans[2] = i;
        Ans[3] = j;
        Ans[4] = y;
      }
      k = 1;
      while (ff[j][k].v == i || ff[j][k].v == j) ++k;
      y = ff[j][k].v;
      k = 1;
      while (gg[i][k].v == i || gg[i][k].v == j || gg[i][k].v == y) ++k;
      x = gg[i][k].v;
      if (g[i][x] != -1 && f[j][y] != -1 && g[i][x] + f[i][j] + f[j][y] > ans) {
        ans = g[i][x] + f[i][j] + f[j][y];
        Ans[1] = x;
        Ans[2] = i;
        Ans[3] = j;
        Ans[4] = y;
      }
    }
  }
  printf("%d %d %d %d\n", Ans[1], Ans[2], Ans[3], Ans[4]);
  return 0;
}
