<|instruction|>
Solve the below problem. The solution should start with an abridged problem statement. Then key observations. Then full solution based on the observations. Then C++ and Python implementations with comments.

151. Construct a triangle
time limit per test: 0.25 sec.
memory limit per test: 4096 KB
input: standard input
output: standard output



Find coordinates of any triangle ABC if it is know that |AB|=c, |AC|=b, |AM|=m, AM is a median of triangle.

Input
There are three real numbers in input: c, b, m (0<c,b,m<=10^3) separated by a space. Length of the fractional part of each number is not greater than 2 digits.

Output
If solution exists, write three lines. Write coordinates of point A to first line, coordinates of B to second line and coordinates of C to third line. Separate numbers by a space; absolute value of each coordinate must not exceed 10^4. Write numbers with 5 digits after decimal point. If there is no solution, write "Mission impossible"

Sample test(s)

Input
5 5 3

Output
0.00000 3.00000
-4.00000 0.00000
4.00000 0.00000
Author:	Michael R. Mirzayanov
Resource:	Saratov Subregional School Team Contest, 2002
Date:	Spring, 2002

<|response|>
1. Abridged problem statement
Given three real numbers c, b, m (all > 0), construct any triangle ABC such that
  • |AB| = c
  • |AC| = b
  • AM is the median from A to side BC, of length m.
If no such triangle exists, print "Mission impossible". Otherwise, print coordinates of A, B, C (one point per line).

2. Key observations needed to solve the problem
- In any triangle, the median from A onto BC has length m satisfying
   m² = (2b² + 2c² − a²) / 4,
  where a = |BC|.
- Rearranging gives
   a² = 2(b² + c²) − 4m².
- For a real triangle we need
   a² ≥ 0  and  triangle inequalities:
   a + b > c,  a + c > b,  b + c > a.
- Once a is known, place A and B in a simple coordinate system:
   A = (0,0),  B = (c,0).
- Use the law of cosines at A to find the angle ∠BAC:
   cos A = (AB² + AC² − BC²) / (2·AB·AC)
         = (c² + b² − a²) / (2bc).
- Then compute sin A = √(1 − cos² A), and set
   C = (b·cos A, b·sin A).

3. Full solution approach based on the observations
1. Read inputs c, b, m.
2. Compute inner = 2·(b² + c²) − 4·m².
3. If inner < 0, no real a exists ⇒ print "Mission impossible" and exit.
4. Let a = √inner.
5. Check triangle inequalities (a + b > c, a + c > b, b + c > a). If any fail, print "Mission impossible" and exit.
6. Compute cos A = (b² + c² − a²) / (2bc).
7. Compute sin A = √(1 − cos² A).
8. Set coordinates:
   A = (0, 0)
   B = (c, 0)
   C = (b·cos A, b·sin A)
9. Print A, B, C with the required precision.

4. C++ implementation
```cpp
#include <bits/stdc++.h>

using namespace std;

template<typename T1, typename T2>
ostream& operator<<(ostream& out, const pair<T1, T2>& x) {
    return out << x.first << ' ' << x.second;
}

template<typename T1, typename T2>
istream& operator>>(istream& in, pair<T1, T2>& x) {
    return in >> x.first >> x.second;
}

template<typename T>
istream& operator>>(istream& in, vector<T>& a) {
    for(auto& x: a) {
        in >> x;
    }
    return in;
};

template<typename T>
ostream& operator<<(ostream& out, const vector<T>& a) {
    for(auto x: a) {
        out << x << ' ';
    }
    return out;
};

double c, b, m;

void read() { cin >> c >> b >> m; }

void solve() {
    // The median length satisfies m^2 = (2b^2 + 2c^2 - a^2) / 4, so the third
    // side is a = sqrt(2b^2 + 2c^2 - 4m^2); if that radicand is negative or
    // the three sides a, b, c violate the triangle inequality there is no
    // triangle. Otherwise we place A at the origin and B at (c, 0) along the
    // x-axis. With the law of cosines for the angle at A, cos = (b^2 + c^2 -
    // a^2)/(2bc), point C lies at (b*cos, b*sin), giving a valid placement.

    double inner_val = 2 * b * b + 2 * c * c - 4 * m * m;
    if(inner_val < 0) {
        cout << "Mission impossible\n";
        return;
    }

    double a = sqrt(inner_val);
    if(a > b + c || b > a + c || c > a + b) {
        cout << "Mission impossible\n";
        return;
    }

    double cos_c = (b * b + c * c - a * a) / (2 * b * c);

    double bx = c, by = 0;
    double cx = b * cos_c;
    double cy = b * sqrt(1 - cos_c * cos_c);

    cout << fixed << setprecision(6);
    cout << 0.0 << ' ' << 0.0 << '\n';
    cout << bx << ' ' << by << '\n';
    cout << cx << ' ' << cy << '\n';
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int T = 1;
    // cin >> T;
    for(int test = 1; test <= T; test++) {
        read();
        // cout << "Case #" << test << ": ";
        solve();
    }

    return 0;
}
```

5. Python implementation with detailed comments
```python
import math
import sys

def main():
    data = sys.stdin.read().strip().split()
    if len(data) != 3:
        # Invalid input format
        return
    c, b, m = map(float, data)

    # 1) Compute squared length of BC using the median formula
    #    a^2 = 2(b^2 + c^2) - 4*m^2
    inner = 2*(b*b + c*c) - 4*(m*m)
    if inner < 0:
        print("Mission impossible")
        return

    # 2) Compute a = |BC|
    a = math.sqrt(inner)

    # 3) Check triangle inequalities
    if a + b <= c or a + c <= b or b + c <= a:
        print("Mission impossible")
        return

    # 4) Compute cos(A) using the law of cosines
    cosA = (c*c + b*b - a*a) / (2 * b * c)
    # Clamp to [-1,1] for numerical stability
    cosA = max(-1.0, min(1.0, cosA))
    # 5) Compute sin(A)
    sinA = math.sqrt(1.0 - cosA*cosA)

    # 6) Place A at (0,0), B at (c,0), C at (b·cosA, b·sinA)
    A = (0.0, 0.0)
    B = (c,   0.0)
    C = (b * cosA, b * sinA)

    # 7) Print results
    for x, y in (A, B, C):
        print(f"{x:.6f} {y:.6f}")

if __name__ == "__main__":
    main()
```

Explanation of the main steps:
- We derive the third side BC from the given median by the well-known formula.
- We verify that a valid triangle can be formed (non-negative side, triangle inequalities).
- We fix A and B on the x-axis, then place C using the law of cosines.
- Any triangle satisfying the conditions is acceptable within the required precision.
