#include <bits/stdc++.h>
using namespace std;
int getMin(int n);
int grundy(int n);
int gr[100100];
int main() {
  int n = 0, g = 0;
  bool end = false;
  memset(gr, -1, sizeof(gr));
  gr[1] = gr[2] = 0;
  gr[3] = 1;
  scanf("%d", &n);
  g = grundy(n);
  if (g == 0) {
    printf("-1\n");
  } else {
    printf("%d\n", getMin(n));
  }
  return 0;
}
int grundy(int n) {
  int g = 0, states[n + 1], mex[n + 1], i = 0;
  memset(mex, 0, sizeof(mex));
  memset(states, 0, sizeof(states));
  if (gr[n] == -1) {
    for (i = 2; n / i - i / 2 >= 0; i++) {
      g = 0;
      if (i % 2 == 1 && n % i == 0) {
        if (n / i - i / 2 == 0) {
          continue;
        }
        for (int j = n / i - i / 2; j <= n / i + i / 2; j++) {
          g ^= grundy(j);
        }
        states[++states[0]] = g;
      } else if (i % 2 == 0 & n % i == i / 2) {
        for (int j = n / i - i / 2 + 1; j <= n / i + i / 2; j++) {
          g ^= grundy(j);
        }
        states[++states[0]] = g;
      }
    }
    for (i = 1; i <= states[0]; i++) {
      mex[states[i]]++;
    }
    for (i = 0; i <= n; i++) {
      if (mex[i] == 0) {
        gr[n] = i;
        break;
      }
    }
  }
  return gr[n];
}
int getMin(int n) {
  int g = 0;
  for (int i = 2; i <= n; i++) {
    g = 0;
    if (i % 2 == 1 && n % i == 0) {
      for (int j = n / i - i / 2; j <= n / i + i / 2; j++) {
        g ^= grundy(j);
      }
      if (g == 0) {
        return i;
      }
    } else if (i % 2 == 0 & n % i == i / 2) {
      for (int j = n / i - i / 2 + 1; j <= n / i + i / 2; j++) {
        g ^= grundy(j);
      }
      if (g == 0) {
        return i;
      }
    }
  }
}
