#include <bits/stdc++.h>
using namespace std;
int k;
int n;
vector<int> res;
void realdiff() {
  long long tmp = 0;
  long long r = 0;
  for (int i = (0); i < (res.size()); i++) {
    tmp = 0;
    for (int j = (i); j < (res.size()); j++) {
      tmp += res[j];
      r = max(r, tmp * (j - i + 1));
    }
  }
  printf("r = %lld\n", r);
  int k = -1;
  tmp = 0;
  long long fake = 0ll;
  for (int i = (0); i < (res.size()); i++) {
    tmp += res[i];
    if (tmp < 0) tmp = 0, k = i;
    fake = max(fake, 1ll * (i - k) * tmp);
  }
  printf("fake = %lld\n", fake);
  printf("%lld\n", r - fake);
}
int main() {
  scanf("%d", &k);
  int st = 1000000;
  while (1) {
    int realans = st + k;
    int p = 0, q = 0;
    for (int i = (1); i <= (2000); i++) {
      if (st % i == 0 && 1ll * st / i <= 1000000ll * i) {
        p = i;
        break;
      }
    }
    for (int i = (2); i <= (2000); i++) {
      if (realans % i == 0 && realans / i <= 999999) {
        q = i;
        break;
      }
    }
    if (p == 0 || q == 0 || p + 50 + q > 2000) {
      st++;
      continue;
    }
    for (int i = (1); i <= (q - 2); i++) res.push_back(0);
    res.push_back(-1);
    res.push_back(realans / q + 1);
    for (int i = (1); i <= (50); i++) res.push_back(-1000000);
    long long rsum = 1ll * st / p;
    for (int i = (1); i <= (p); i++) {
      long long tmp = min(1000000ll, rsum);
      res.push_back(tmp);
      rsum -= tmp;
    }
    break;
  }
  printf("%d\n", (int)res.size());
  for (int i : res) printf("%d ", i);
  puts("");
  return 0;
}
