#include <bits/stdc++.h>
using namespace std;
bool mat[102][102], mh, co;
int in[2012], ou[2012], n, m;
void DFS(int u, int cnt) {
  ou[cnt] = u;
  if (cnt == m) {
    if (!mh) co = false;
    mh = false;
    return;
  }
  for (int i = 1; i <= n && co; i++) {
    if (mh && mat[u][i] && i == in[cnt + 1]) {
      mat[u][i] = false;
      mat[i][u] = false;
      DFS(i, cnt + 1);
      mat[u][i] = true;
      mat[i][u] = true;
    } else if (!mh && mat[u][i]) {
      mat[u][i] = false;
      mat[i][u] = false;
      DFS(i, cnt + 1);
      mat[u][i] = true;
      mat[i][u] = true;
    }
  }
}
int main() {
  int i, k;
  while (scanf("%d%d", &n, &m) == 2) {
    memset(mat, false, sizeof(mat));
    scanf("%d", &in[0]);
    k = in[0];
    for (i = 0; i < m; i++) {
      scanf("%d", &in[i + 1]);
      mat[in[i]][in[i + 1]] = true;
      mat[in[i + 1]][in[i]] = true;
    }
    co = mh = true;
    { DFS(k, 0); }
    if (co)
      printf("No solution\n");
    else {
      for (i = 0; i <= m; i++) {
        if (i) printf(" ");
        printf("%d", ou[i]);
      }
      printf("\n");
    }
  }
  return 0;
}
