#include <bits/stdc++.h>
int const maxn = 100004;
int N;
int SG[maxn];
void Prep() {
  memset(SG, 255, sizeof SG);
  SG[0] = SG[1] = 0;
}
int Sg(int x) {
  if (SG[x] != -1) return SG[x];
  int sg, j, k;
  bool suc[maxn] = {0};
  for (int i = 1; i < x; i++)
    if (x % i == 0) {
      if (i & 1 && (j = x / i - i / 2) >= 1 && i != 1) {
        sg = 0;
        for (k = 0; k < i; k++) sg ^= Sg(j + k);
        suc[sg] = 1;
      }
      if ((x / i) & 1 && (j = x / i / 2 - i + 1) >= 1) {
        sg = 0;
        for (k = 0; k < i * 2; k++) sg ^= Sg(j + k);
        suc[sg] = 1;
      }
    }
  for (sg = 0; suc[sg]; sg++)
    ;
  return SG[x] = sg;
}
int solve() {
  if (!Sg(N)) return -1;
  int Ret = ~0U >> 1, sg, j, k;
  for (int i = 2; i < N; i++)
    if (N % i == 0) {
      if (i & 1 && (j = N / i - i / 2) >= 1) {
        sg = 0;
        for (k = 0; k < i; k++) sg ^= SG[j + k];
        if (!sg) {
          if (i < Ret)
            Ret = i;
          else
            break;
        }
      }
    }
  for (int i = 1; i < N; i++)
    if (N % i == 0) {
      if ((N / i) & 1 && (j = N / i / 2 - i + 1) >= 1) {
        sg = 0;
        for (k = 0; k < i * 2; k++) sg ^= SG[j + k];
        if (!sg) {
          if (i * 2 < Ret)
            Ret = i * 2;
          else
            break;
        }
      }
    }
  return Ret;
}
int main() {
  Prep();
  while (scanf("%d", &N) != EOF) printf("%d\n", solve());
  return 0;
}
