#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
int n, m, a, b;
vector<int> grh[3005][2];
vector<pair<int, int> > can[3005][2];
int dist[3005];
void bfs(int pos, bool b) {
  memset(dist, -1, sizeof(dist));
  queue<pair<int, int> > q;
  deque<pair<int, int> > q1;
  vector<bool> visited(n, 0);
  visited[pos] = 1;
  q.push(make_pair(pos, 0));
  dist[pos] = 0;
  while (!q.empty()) {
    int t = q.front().first, len = q.front().second + 1;
    q.pop();
    for (int i = 0; i < (int)grh[t][b].size(); i++) {
      int t1 = grh[t][b][i];
      if (!visited[t1]) {
        q.push(make_pair(t1, len));
        visited[t1] = 1;
        dist[t1] = len;
        q1.push_back(make_pair(t1, len));
      }
    }
  }
  while (!q1.empty() && can[pos][b].size() < 3) {
    pair<int, int> tp = q1.back();
    q1.pop_back();
    can[pos][b].push_back(tp);
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (int)m; i++) {
    scanf("%d%d", &a, &b);
    a--;
    b--;
    grh[a][0].push_back(b);
    grh[b][1].push_back(a);
  }
  for (int i = 0; i < (int)n; i++) {
    bfs(i, 0);
    bfs(i, 1);
  }
  int ans[4], sum = 0;
  for (int i = 0; i < (int)n; i++) {
    bfs(i, 0);
    for (int j = 0; j < (int)n; j++) {
      if (i == j) continue;
      int a, b = i, c = j, d, s1 = 0, s2 = dist[j], s3 = 0;
      if (s2 <= 0) continue;
      for (int k = 0; k < (int)can[b][1].size(); k++) {
        a = can[b][1][k].first;
        s1 = can[b][1][k].second;
        if (a == c) continue;
        for (int l = 0; l < (int)can[c][0].size(); l++) {
          d = can[c][0][l].first;
          s3 = can[c][0][l].second;
          if (d == a || d == b) continue;
          if (s1 + s2 + s3 > sum) {
            sum = s1 + s2 + s3;
            ans[0] = a;
            ans[1] = b;
            ans[2] = c;
            ans[3] = d;
          }
        }
      }
    }
  }
  for (int i = 0; i < (int)4; i++) printf("%d ", ans[i] + 1);
  printf("\n");
  return 0;
}
