#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  while (b) b ^= a ^= b ^= a %= b;
  return a;
}
long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
long long bigmod(long long n, long long power, long long mod) {
  if (!power) return 1;
  if (power % 2 == 0) {
    int ret = bigmod(n, power / 2, mod);
    return ((ret % mod) * (ret % mod)) % mod;
  } else
    return ((n % mod) * (bigmod(n, power - 1, mod) % mod)) % mod;
}
long long power(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) res *= x;
    x *= x;
    y >>= 1;
  }
  return res;
}
int n, powe = 1, plusplus, minusminus, A[201], B[201], t;
string s;
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  getline(cin, s);
  int m = s.size();
  int j = m - 1;
  while (s[j] != ' ') {
    n += (powe * (s[j] - 48));
    j--;
    powe *= 10;
  }
  for (int i = 0; i < m; i++) {
    plusplus += (s[i] == '+');
    minusminus += (s[i] == '-');
  }
  for (int i = 1; i <= plusplus + 1; i++) A[i] = 1;
  for (int i = 1; i <= minusminus; i++) B[i] = 1;
  int t = plusplus - minusminus + 1;
  if (t < n) {
    for (int i = 1; i <= plusplus + 1; i++) {
      int add = min(n - A[i], n - t);
      A[i] += add;
      t += add;
    }
  } else {
    for (int i = 1; i <= minusminus; i++) {
      int add = min(n - B[i], t - n);
      B[i] += add;
      t -= add;
    }
  }
  if (t == n) {
    cout << "Possible\n";
    cout << A[1] << " ";
    plusplus = 2;
    minusminus = 1;
    for (int i = 0; i < m; i++)
      if (s[i] == '-')
        cout << "- " << B[minusminus++] << " ";
      else if (s[i] == '+')
        cout << "+ " << A[plusplus++] << " ";
    cout << "= " << n << "\n";
    return 0;
  } else
    return cout << "Impossible", 0;
  cin >> n;
  return 0;
}
