#include <bits/stdc++.h>
using namespace std;
long long n, s, res = 0x3f3f3f3f, ans;
long long d[2010][2010], cd[2010][2010], dp1[2010], dp2[2010];
long long nxt[2010], a[2010];
long long gao1(long long u);
long long gao2(long long u) {
  long long &res = dp2[u];
  if (res != -1) return res;
  if (nxt[u] == 0x3f3f3f3f) return res = 0;
  res = 0x3f3f3f3f;
  for (long long i = 0; i < n; i++)
    if (a[i] == nxt[u]) res = min(res, gao1(i) + d[u][i]);
  return res;
}
long long gao1(long long u) {
  long long &res = dp1[u];
  if (res != -1) return res;
  res = 0x3f3f3f3f;
  for (long long dir = -1; dir <= 1; dir += 2) {
    long long v = -1;
    for (long long i = 1; i < n; i++) {
      long long t = (u + dir * i + n) % n;
      if (a[t] == a[u]) {
        v = t;
        break;
      }
    }
    if (v == -1)
      res = min(res, gao2(u));
    else {
      long long add = dir == -1 ? cd[u][v] : cd[v][u];
      res = min(res, gao2(v) + add);
    }
  }
  return res;
}
void output1(long long);
void output2(long long u) {
  long long res = 0x3f3f3f3f;
  if (nxt[u] == 0x3f3f3f3f) return;
  for (long long i = 0; i < n; i++) {
    if (a[i] == nxt[u]) res = min(res, dp1[i] + d[u][i]);
    if (res == dp2[u]) {
      cout << ((i - u + n) % n == d[u][i] ? '+' : '-') << d[u][i] << endl;
      output1(i);
      return;
    }
  }
}
void output1(long long u) {
  long long res = 0x3f3f3f3f;
  for (long long dir = -1; dir <= 1; dir += 2) {
    long long v = -1;
    for (long long i = 1; i < n; i++) {
      long long t = (u + dir * i + n) % n;
      if (a[t] == a[u]) {
        v = t;
        break;
      }
    }
    if (v == -1)
      res = min(res, dp2[u]);
    else {
      long long add = dir == -1 ? cd[u][v] : cd[v][u];
      res = min(res, dp2[v] + add);
    }
    if (res == dp1[u]) {
      long long lst = 0;
      dir = (dir == -1 ? 1 : -1);
      for (long long i = 1; i < n; i++) {
        long long t = (u + dir * i + n) % n;
        if (a[t] == a[u] || t == v) {
          cout << (dir == -1 ? '-' : '+') << i - lst << endl;
          lst = i;
        }
      }
      if (v == -1)
        output2(u);
      else
        output2(v);
      return;
    }
  }
}
signed main() {
  cin >> n >> s, s--;
  long long mi = 0x3f3f3f3f;
  for (long long i = 0; i < n; i++) cin >> a[i], mi = min(mi, a[i]);
  for (long long i = 0; i < n; i++) {
    nxt[i] = 0x3f3f3f3f;
    for (long long j = 0; j < n; j++) {
      if (a[j] > a[i]) nxt[i] = min(nxt[i], a[j]);
    }
  }
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < n; j++) {
      d[i][j] = min(abs(i - j), n - abs(i - j));
      cd[i][j] = j >= i ? j - i : n - i + j;
    }
  }
  memset(dp1, -1, sizeof dp1);
  memset(dp2, -1, sizeof dp2);
  ans = 0x3f3f3f3f;
  for (long long i = 0; i < n; i++) {
    if (a[i] == mi) ans = min(ans, gao1(i) + d[i][s]);
  }
  cout << ans << endl;
  for (long long i = 0; i < n; i++)
    if (a[i] == mi) {
      res = min(res, dp1[i] + d[i][s]);
      if (res == ans) {
        cout << ((i - s + n) % n == d[s][i] ? '+' : '-') << d[s][i] << endl;
        output1(i);
        return 0;
      }
    }
  return 0;
}
