#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = 100000000;
int fastMin(int x, int y) { return (((y - x) >> (32 - 1)) & (x ^ y)) ^ x; }
int fastMax(int x, int y) { return (((y - x) >> (32 - 1)) & (x ^ y)) ^ y; }
template <class T>
T gcd(T a, T b) {
  return b ? gcd(b, a % b) : a;
}
bool x[((int)1e6)];
int main() {
  const int s = ((int)1e6);
  int n;
  scanf("%d", &n);
  for (int i = 0; i < (n); i++) {
    int tmp;
    scanf("%d", &tmp);
    x[tmp - 1] = true;
  }
  vector<int> ans;
  int cnt = 0;
  vector<pair<int, int> > ok_lists;
  for (int i = 0; i < (s / 2); i++) {
    if (x[i] && x[s - i - 1])
      cnt++;
    else if (x[i] || x[s - i - 1]) {
      if (x[i])
        ans.push_back(s - i);
      else
        ans.push_back(i + 1);
    } else {
      ok_lists.push_back(pair<int, int>(i + 1, s - i));
    }
  }
  for (int i = 0; i < (cnt); i++) {
    ans.push_back(ok_lists[i].first);
    ans.push_back(ok_lists[i].second);
  }
  printf("%d\n", ((int)(ans).size()));
  for (int i = 0; i < (((int)(ans).size())); i++)
    printf("%d%c", ans[i], i == ((int)(ans).size()) - 1 ? '\n' : ' ');
  return 0;
}
