#include <bits/stdc++.h>
using namespace std;
long long int modpow(long long int a, long long int n, long long int temp) {
  long long int res = 1, y = a;
  while (n > 0) {
    if (n & 1) res = (res * y) % temp;
    y = (y * y) % temp;
    n /= 2;
  }
  return res % temp;
}
int main() {
  int p = 1, n = 0, x, y, N = 0, flag = 0, P = 1, k, mx = 0, my = 0;
  string bus;
  getline(cin, bus);
  int l = (int)(bus.size());
  for (int i = 0; i < l; ++i) {
    if (bus[i] == '=') k = i;
  }
  k++;
  for (int i = l - 1; i > k; --i) {
    N += P * (bus[i] - '0');
    P *= 10;
  }
  for (int i = 1; i < l; i++) {
    if (bus[i] == '+')
      p++;
    else if (bus[i] == '-')
      n++;
  }
  for (y = n; y <= N * n; ++y) {
    x = N + y;
    if (x > N * p)
      break;
    else if (x >= p) {
      flag = 1;
      break;
    }
  }
  if (!flag) {
    printf("Impossible\n");
    return 0;
  } else {
    if (p > 0) mx = x % p;
    if (n > 0) my = y % n;
    int tm = 0;
    printf("Possible\n");
    if (mx) {
      tm = 1;
      mx--;
    }
    printf("%d ", x / p + tm);
    for (int i = 2, f = 0; i < l && bus[i] != '='; i += 4) {
      if (bus[i] == '+') {
        if (mx > 0) {
          tm = 1;
          mx--;
        } else
          tm = 0;
        printf("+ %d ", x / p + tm);
      } else {
        if (my > 0) {
          tm = 1;
          my--;
        } else
          tm = 0;
        printf("- %d ", y / n + tm);
      }
    }
    printf("= %d\n", N);
  }
  return 0;
}
