#include int main() { int i, N, P[300001]; scanf("%d", &N); for (i = 1; i <= N; i++) scanf("%d", &(P[i])); int k = 0, l, r, m, dp[300001] = {}, prev[300001], ans[2][300001]; for (i = 1; i <= N; i++) { l = 0; r = k; while (l < r) { m = (l + r + 1) / 2; if (P[dp[m]] > P[i]) r = m - 1; else l = m; } if (l == k) k++; prev[i] = dp[l]; dp[l+1] = i; } for (i = dp[k]; i > 0; i = prev[i]) ans[0][k--] = P[i]; int j; for (i = N, k = 0; i >= 1; i--) { l = 0; r = k; while (l < r) { m = (l + r + 1) / 2; if (P[dp[m]] < P[i]) r = m - 1; else l = m; } if (l == k) k++; prev[i] = dp[l]; dp[l+1] = i; } for (i = dp[k], j = 1; i > 0; i = prev[i]) ans[1][j++] = P[i]; for (i = 1, j = 0; i <= k; i++) if (ans[0][i] == ans[1][i]) j++; printf("%d\n", j); for (i = 1; i <= k; i++) if (ans[0][i] == ans[1][i]) printf("%d ", ans[0][i]); printf("\n"); fflush(stdout); return 0; }