[TASK]
You will be given four numbers and a target number, your task is to find a way to use all four numbers exactly once, along with the basic operations (+, -, *, /), to reach the target number.

[RULES]
- You can use each number exactly once.
- You can use the four basic operations (+, -, *, /).
- The intermediate results must be integers (no decimals allowed).
- The intermediate results must be positive.
- The intermediate results will not exceed 2000.

[APPROACH]
We will solve the problem by searching. Starting from a given set of four numbers, we will follow this search process:
- At each state, we will consider all possible number pairs (in order) from the current number set. Choose one pair and apply one of the four basic operations to them to obtain a new number.
  * If there are still numbers left, we will add the new number to the number set and continue the search.
  * If we have used all numbers, we will check if the new number is equal to the target number. If it is, we have found the solution. Otherwise, we will backtrack.
- Suppose the two numbers we choose are a and b (where a >= b). We will try the four options (a + b), (a - b), (a * b), (a / b) to obtain the new number. Remember to always use the larger number as the first operand.
- If the new number is a decimal, or exceeds the maximum intermediate result, we will discard this branch and backtrack.
- We will continue this process until we reach the target number with four numbers used or exhaust all possible combinations.

[EXAMPLES]
# Example
Numbers: [40, 19, 23, 7]
Target: 29

# Search Procedure
Initial number set: [40, 19, 23, 7], target: 29. Options for choosing two numbers: [(40, 19), (40, 23), (40, 7), (19, 23), (19, 7), (23, 7)].
 |- Pick two numbers (40, 19) (numbers left: [23, 7]). Try possible operations.
  |- Try 40 + 19 = 59. Add 59 to the number set. Current number set: [59, 23, 7], target: 29. Options for choosing two numbers: [(59, 23), (59, 7), (23, 7)].
   |- Pick two numbers (59, 23) (numbers left: [7]). Try possible operations.
    |- Try 59 + 23 = 82. Add 82 to the number set. Current number set: [82, 7], target: 29, just two numbers left.
     |- Try 82 + 7 = 89. Evaluate 89 != 29, drop this branch.
     |- Try 82 - 7 = 75. Evaluate 75 != 29, drop this branch.
     |- Try 82 * 7 = 574. Evaluate 574 != 29, drop this branch.
     |- Try 82 / 7 = 11.7. 11.7 is a decimal, drop this branch.
    |- Try 59 - 23 = 36. Add 36 to the number set. Current number set: [36, 7], target: 29, just two numbers left.
     |- Try 36 + 7 = 43. Evaluate 43 != 29, drop this branch.
     |- Try 36 - 7 = 29. Evaluate 29 == 29, target found!

Now we have found the target, let's trace back the solution:
Final step: 36 - 7 = 29
The step before: 59 - 23 = 36
The first step: 40 + 19 = 59

Output the solution in the required format:
<Solution>
40 + 19 = 59
59 - 23 = 36
36 - 7 = 29
</Solution>

# Example
Numbers: [9, 16, 6, 18]
Target: 12

# Search Procedure
Initial number set: [9, 16, 6, 18], target: 12. Options for choosing two numbers: [(9, 16), (9, 6), (9, 18), (16, 6), (16, 18), (6, 18)].
 |- Pick two numbers (9, 16) (numbers left: [6, 18]). Try possible operations.
  |- Try 16 + 9 = 25. Add 25 to the number set. Current number set: [25, 6, 18], target: 12. Options for choosing two numbers: [(25, 6), (25, 18), (6, 18)].
   |- Pick two numbers (25, 6) (numbers left: [18]). Try possible operations.
    |- Try 25 + 6 = 31. Add 31 to the number set. Current number set: [31, 18], target: 12, just two numbers left.
     |- Try 31 + 18 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 31 - 18 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 31 * 18 = 558. Evaluate 558 != 12, drop this branch.
     |- Try 31 / 18 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 25 - 6 = 19. Add 19 to the number set. Current number set: [19, 18], target: 12, just two numbers left.
     |- Try 19 + 18 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 19 - 18 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 19 * 18 = 342. Evaluate 342 != 12, drop this branch.
     |- Try 19 / 18 = 1.1. 1.1 is a decimal, drop this branch.
    |- Try 25 * 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
   |- Pick two numbers (25, 18) (numbers left: [6]). Try possible operations.
    |- Try 25 + 18 = 43. Add 43 to the number set. Current number set: [43, 6], target: 12, just two numbers left.
     |- Try 43 + 6 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 43 - 6 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 43 * 6 = 258. Evaluate 258 != 12, drop this branch.
     |- Try 43 / 6 = 7.2. 7.2 is a decimal, drop this branch.
    |- Try 25 - 18 = 7. Add 7 to the number set. Current number set: [7, 6], target: 12, just two numbers left.
     |- Try 7 + 6 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 7 - 6 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 7 * 6 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
    |- Try 25 * 18 = 450. Add 450 to the number set. Current number set: [450, 6], target: 12, just two numbers left.
     |- Try 450 + 6 = 456. Evaluate 456 != 12, drop this branch.
     |- Try 450 - 6 = 444. Evaluate 444 != 12, drop this branch.
     |- Try 450 * 6 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 450 / 6 = 75. Evaluate 75 != 12, drop this branch.
    |- Try 25 / 18 = 1.4. 1.4 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [25]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 25], target: 12, just two numbers left.
     |- Try 25 + 24 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 25 - 24 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 25 * 24 = 600. Evaluate 600 != 12, drop this branch.
     |- Try 25 / 24 = 1.0. 1.0 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 25], target: 12, just two numbers left.
     |- Try 25 + 12 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 25 - 12 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 25 * 12 = 300. Evaluate 300 != 12, drop this branch.
     |- Try 25 / 12 = 2.1. 2.1 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 25], target: 12, just two numbers left.
     |- Try 108 + 25 = 133. Evaluate 133 != 12, drop this branch.
     |- Try 108 - 25 = 83. Evaluate 83 != 12, drop this branch.
     |- Try 108 * 25 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 108 / 25 = 4.3. 4.3 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 25], target: 12, just two numbers left.
     |- Try 25 + 3 = 28. Evaluate 28 != 12, drop this branch.
     |- Try 25 - 3 = 22. Evaluate 22 != 12, drop this branch.
     |- Try 25 * 3 = 75. Evaluate 75 != 12, drop this branch.
     |- Try 25 / 3 = 8.3. 8.3 is a decimal, drop this branch.
  |- Try 16 - 9 = 7. Add 7 to the number set. Current number set: [7, 6, 18], target: 12. Options for choosing two numbers: [(7, 6), (7, 18), (6, 18)].
   |- Pick two numbers (7, 6) (numbers left: [18]). Try possible operations.
    |- Try 7 + 6 = 13. Add 13 to the number set. Current number set: [13, 18], target: 12, just two numbers left.
     |- Try 18 + 13 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 18 - 13 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 18 * 13 = 234. Evaluate 234 != 12, drop this branch.
     |- Try 18 / 13 = 1.4. 1.4 is a decimal, drop this branch.
    |- Try 7 - 6 = 1. Add 1 to the number set. Current number set: [1, 18], target: 12, just two numbers left.
     |- Try 18 + 1 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 18 - 1 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 18 * 1 = 18. Evaluate 18 != 12, drop this branch.
     |- Try 18 / 1 = 18. Evaluate 18 != 12, drop this branch.
    |- Try 7 * 6 = 42. Add 42 to the number set. Current number set: [42, 18], target: 12, just two numbers left.
     |- Try 42 + 18 = 60. Evaluate 60 != 12, drop this branch.
     |- Try 42 - 18 = 24. Evaluate 24 != 12, drop this branch.
     |- Try 42 * 18 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 42 / 18 = 2.3. 2.3 is a decimal, drop this branch.
    |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
   |- Pick two numbers (7, 18) (numbers left: [6]). Try possible operations.
    |- Try 18 + 7 = 25. Add 25 to the number set. Current number set: [25, 6], target: 12, just two numbers left.
     |- Try 25 + 6 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 25 - 6 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 25 * 6 = 150. Evaluate 150 != 12, drop this branch.
     |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
    |- Try 18 - 7 = 11. Add 11 to the number set. Current number set: [11, 6], target: 12, just two numbers left.
     |- Try 11 + 6 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 11 - 6 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 11 * 6 = 66. Evaluate 66 != 12, drop this branch.
     |- Try 11 / 6 = 1.8. 1.8 is a decimal, drop this branch.
    |- Try 18 * 7 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 18 / 7 = 2.6. 2.6 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [7]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 7], target: 12, just two numbers left.
     |- Try 24 + 7 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 24 - 7 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 24 * 7 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 24 / 7 = 3.4. 3.4 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 7], target: 12, just two numbers left.
     |- Try 12 + 7 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 12 - 7 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 12 * 7 = 84. Evaluate 84 != 12, drop this branch.
     |- Try 12 / 7 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 7], target: 12, just two numbers left.
     |- Try 108 + 7 = 115. Evaluate 115 != 12, drop this branch.
     |- Try 108 - 7 = 101. Evaluate 101 != 12, drop this branch.
     |- Try 108 * 7 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 108 / 7 = 15.4. 15.4 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 7], target: 12, just two numbers left.
     |- Try 7 + 3 = 10. Evaluate 10 != 12, drop this branch.
     |- Try 7 - 3 = 4. Evaluate 4 != 12, drop this branch.
     |- Try 7 * 3 = 21. Evaluate 21 != 12, drop this branch.
     |- Try 7 / 3 = 2.3. 2.3 is a decimal, drop this branch.
  |- Try 16 * 9 = 144. Add 144 to the number set. Current number set: [144, 6, 18], target: 12. Options for choosing two numbers: [(144, 6), (144, 18), (6, 18)].
   |- Pick two numbers (144, 6) (numbers left: [18]). Try possible operations.
    |- Try 144 + 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 144 - 6 = 138. Add 138 to the number set. Current number set: [138, 18], target: 12, just two numbers left.
     |- Try 138 + 18 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 138 - 18 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 138 * 18 = 2484. 2484 exceeds the maximum intermediate result, drop this branch.
     |- Try 138 / 18 = 7.7. 7.7 is a decimal, drop this branch.
    |- Try 144 * 6 = 864. Add 864 to the number set. Current number set: [864, 18], target: 12, just two numbers left.
     |- Try 864 + 18 = 882. Evaluate 882 != 12, drop this branch.
     |- Try 864 - 18 = 846. Evaluate 846 != 12, drop this branch.
     |- Try 864 * 18 = 15552. 15552 exceeds the maximum intermediate result, drop this branch.
     |- Try 864 / 18 = 48. Evaluate 48 != 12, drop this branch.
    |- Try 144 / 6 = 24. Add 24 to the number set. Current number set: [24, 18], target: 12, just two numbers left.
     |- Try 24 + 18 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 24 - 18 = 6. Evaluate 6 != 12, drop this branch.
     |- Try 24 * 18 = 432. Evaluate 432 != 12, drop this branch.
     |- Try 24 / 18 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (144, 18) (numbers left: [6]). Try possible operations.
    |- Try 144 + 18 = 162. Add 162 to the number set. Current number set: [162, 6], target: 12, just two numbers left.
     |- Try 162 + 6 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 162 - 6 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 162 * 6 = 972. Evaluate 972 != 12, drop this branch.
     |- Try 162 / 6 = 27. Evaluate 27 != 12, drop this branch.
    |- Try 144 - 18 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 144 * 18 = 2592. 2592 exceeds the maximum intermediate result, drop this branch.
    |- Try 144 / 18 = 8. Add 8 to the number set. Current number set: [8, 6], target: 12, just two numbers left.
     |- Try 8 + 6 = 14. Evaluate 14 != 12, drop this branch.
     |- Try 8 - 6 = 2. Evaluate 2 != 12, drop this branch.
     |- Try 8 * 6 = 48. Evaluate 48 != 12, drop this branch.
     |- Try 8 / 6 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [144]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 144], target: 12, just two numbers left.
     |- Try 144 + 24 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 144 - 24 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 144 * 24 = 3456. 3456 exceeds the maximum intermediate result, drop this branch.
     |- Try 144 / 24 = 6. Evaluate 6 != 12, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 144], target: 12, just two numbers left.
     |- Try 144 + 12 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 144 - 12 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 144 * 12 = 1728. Evaluate 1728 != 12, drop this branch.
     |- Try 144 / 12 = 12. Evaluate 12 == 12, target found!

Now we have found the target, let's trace back the solution:
Final step: 144 / 12 = 12
The step before: 18 - 6 = 12
The first step: 16 * 9 = 144

Output the solution in the required format:
<Solution>
16 * 9 = 144
18 - 6 = 12
144 / 12 = 12
</Solution>

[Problem]
Now, solve the following problem. Note that:
- Please carefully read the approach and examples provided above, and follow them to solve the problem.
- Please ALWAYS include your search procedure (after # Search Procedure). The search procedure should follow the format of the examples provided above.
- Please mark your answer with <Solution> and </Solution> tags. The solution should be a sequence of three equations exactly following the format of the examples above, with no additional text in between.

Numbers: [40, 8, 28, 30]
Target: 34

# Search Procedure
Initial number set: [40, 8, 28, 30], target: 34. Options for choosing two numbers: [(40, 8), (40, 28), (40, 30), (8, 28), (8, 30), (28, 30)].
 |- Pick two numbers (40, 8) (numbers left: [28, 30]). Try possible operations.
  |- Try 40 + 8 = 48. Add 48 to the number set. Current number set: [48, 28, 30], target: 34. Options for choosing two numbers: [(48, 28), (48, 30), (28, 30)].
   |- Pick two numbers (48, 28) (numbers left: [30]). Try possible operations.
    |- Try 48 + 28 = 76. Add 76 to the number set. Current number set: [76, 30], target: 34, just two numbers left.
     |- Try 76 + 30 = 106. Evaluate 106 != 34, drop this branch.
     |- Try 76 - 30 = 46. Evaluate 46 != 34, drop this branch.
     |- Try 76 * 30 = 2280. 2280 exceeds the maximum intermediate result, drop this branch.
     |- Try 76 / 30 = 2.5. 2.5 is a decimal, drop this branch.
    |- Try 48 - 28 = 20. Add 20 to the number set. Current number set: [20, 30], target: 34, just two numbers left.
     |- Try 30 + 20 = 50. Evaluate 50 != 34, drop this branch.
     |- Try 30 - 20 = 10. Evaluate 10 != 34, drop this branch.
     |- Try 30 * 20 = 600. Evaluate 600 != 34, drop this branch.
     |- Try 30 / 20 = 1.5. 1.5 is a decimal, drop this branch.
    |- Try 48 * 28 = 1344. Add 1344 to the number set. Current number set: [1344, 30], target: 34, just two numbers left.
     |- Try 1344 + 30 = 1374. Evaluate 1374 != 34, drop this branch.
     |- Try 1344 - 30 = 1314. Evaluate 1314 != 34, drop this branch.
     |- Try 1344 * 30 = 40320. 40320 exceeds the maximum intermediate result, drop this branch.
     |- Try 1344 / 30 = 44.8. 44.8 is a decimal, drop this branch.
    |- Try 48 / 28 = 1.7. 1.7 is a decimal, drop this branch.
   |- Pick two numbers (48, 30) (numbers left: [28]). Try possible operations.
    |- Try 48 + 30 = 78. Add 78 to the number set. Current number set: [78, 28], target: 34, just two numbers left.
     |- Try 78 + 28 = 106. Evaluate 106 != 34, drop this branch.
     |- Try 78 - 28 = 50. Evaluate 50 != 34, drop this branch.
     |- Try 78 * 28 = 2184. 2184 exceeds the maximum intermediate result, drop this branch.
     |- Try 78 / 28 = 2.8. 2.8 is a decimal, drop this branch.
    |- Try 48 - 30 = 18. Add 18 to the number set. Current number set: [18, 28], target: 34, just two numbers left.
     |- Try 28 + 18 = 46. Evaluate 46 != 34, drop this branch.
     |- Try 28 - 18 = 10. Evaluate 10 != 34, drop this branch.
     |- Try 28 * 18 = 504. Evaluate 504 != 34, drop this branch.
     |- Try 28 / 18 = 1.6. 1.6 is a decimal, drop this branch.
    |- Try 48 * 30 = 1440. Add 1440 to the number set. Current number set: [1440, 28], target: 34, just two numbers left.
     |- Try 1440 + 28 = 1468. Evaluate 1468 != 34, drop this branch.
     |- Try 1440 - 28 = 1412. Evaluate 1412 != 34, drop this branch.
     |- Try 1440 * 28 = 40320. 40320 exceeds the maximum intermediate result, drop this branch.
     |- Try 1440 / 28 = 51.4. 51.4 is a decimal, drop this branch.
    |- Try 48 / 30 = 1.6. 1.6 is a decimal, drop this branch.
   |- Pick two numbers (28, 30) (numbers left: [48]). Try possible operations.
    |- Try 30 + 28 = 58. Add 58 to the number set. Current number set: [58, 48], target: 34, just two numbers left.
     |- Try 58 + 48 = 106. Evaluate 106 != 34, drop this branch.
     |- Try 58 - 48 = 10. Evaluate 10 != 34, drop this branch.
     |- Try 58 * 48 = 2784. 2784 exceeds the maximum intermediate result, drop this branch.
     |- Try 58 / 48 = 1.2. 1.2 is a decimal, drop this branch.
    |- Try 30 - 28 = 2. Add 2 to the number set. Current number set: [2, 48], target: 34, just two numbers left.
     |- Try 48 + 2 = 50. Evaluate 50 != 34, drop this branch.
     |- Try 48 - 2 = 46. Evaluate 46 != 34, drop this branch.
     |- Try 48 * 2 = 96. Evaluate 96 != 34, drop this branch.
     |- Try 48 / 2 = 24. Evaluate 24 != 34, drop this branch.
    |- Try 30 * 28 = 840. Add 840 to the number set. Current number set: [840, 48], target: 34, just two numbers left.
     |- Try 840 + 48 = 888. Evaluate 888 != 34, drop this branch.
     |- Try 840 - 48 = 792. Evaluate 792 != 34, drop this branch.
     |- Try 840 * 48 = 40320. 40320 exceeds the maximum intermediate result, drop this branch.
     |- Try 840 / 48 = 17.5. 17.5 is a decimal, drop this branch.
    |- Try 30 / 28 = 1.1. 1.1 is a decimal, drop this branch.
  |- Try 40 - 8 = 32. Add 32 to the number set. Current number set: [32, 28, 30], target: 34. Options for choosing two numbers: [(32, 28), (32, 30), (28, 30)].
   |- Pick two numbers (32, 28) (numbers left: [30]). Try possible operations.
    |- Try 32 + 28 = 60. Add 60 to the number set. Current number set: [60, 30], target: 34, just two numbers left.
     |- Try 60 + 30 = 90. Evaluate 90 != 34, drop this branch.
     |- Try 60 - 30 = 30. Evaluate 30 != 34, drop this branch.
     |- Try 60 * 30 = 1800. Evaluate 1800 != 34, drop this branch.
     |- Try 60 / 30 = 2. Evaluate 2 != 34, drop this branch.
    |- Try 32 - 28 = 4. Add 4 to the number set. Current number set: [4, 30], target: 34, just two numbers left.
     |- Try 30 + 4 = 34. Evaluate 34 == 34, target found!

Now we have found the target, let's trace back the solution:
Final step: 30 + 4 = 34
The step before: 32 - 28 = 4
The first step: 40 - 8 = 32

Output the solution in the required format:
<Solution>
40 - 8 = 32
32 - 28 = 4
30 + 4 = 34
</Solution>

Solution:
40 - 8 = 32
32 - 28 = 4
30 + 4 = 34


[TASK]
You will be given four numbers and a target number, your task is to find a way to use all four numbers exactly once, along with the basic operations (+, -, *, /), to reach the target number.

[RULES]
- You can use each number exactly once.
- You can use the four basic operations (+, -, *, /).
- The intermediate results must be integers (no decimals allowed).
- The intermediate results must be positive.
- The intermediate results will not exceed 2000.

[APPROACH]
We will solve the problem by searching. Starting from a given set of four numbers, we will follow this search process:
- At each state, we will consider all possible number pairs (in order) from the current number set. Choose one pair and apply one of the four basic operations to them to obtain a new number.
  * If there are still numbers left, we will add the new number to the number set and continue the search.
  * If we have used all numbers, we will check if the new number is equal to the target number. If it is, we have found the solution. Otherwise, we will backtrack.
- Suppose the two numbers we choose are a and b (where a >= b). We will try the four options (a + b), (a - b), (a * b), (a / b) to obtain the new number. Remember to always use the larger number as the first operand.
- If the new number is a decimal, or exceeds the maximum intermediate result, we will discard this branch and backtrack.
- We will continue this process until we reach the target number with four numbers used or exhaust all possible combinations.

[EXAMPLES]
# Example
Numbers: [40, 19, 23, 7]
Target: 29

# Search Procedure
Initial number set: [40, 19, 23, 7], target: 29. Options for choosing two numbers: [(40, 19), (40, 23), (40, 7), (19, 23), (19, 7), (23, 7)].
 |- Pick two numbers (40, 19) (numbers left: [23, 7]). Try possible operations.
  |- Try 40 + 19 = 59. Add 59 to the number set. Current number set: [59, 23, 7], target: 29. Options for choosing two numbers: [(59, 23), (59, 7), (23, 7)].
   |- Pick two numbers (59, 23) (numbers left: [7]). Try possible operations.
    |- Try 59 + 23 = 82. Add 82 to the number set. Current number set: [82, 7], target: 29, just two numbers left.
     |- Try 82 + 7 = 89. Evaluate 89 != 29, drop this branch.
     |- Try 82 - 7 = 75. Evaluate 75 != 29, drop this branch.
     |- Try 82 * 7 = 574. Evaluate 574 != 29, drop this branch.
     |- Try 82 / 7 = 11.7. 11.7 is a decimal, drop this branch.
    |- Try 59 - 23 = 36. Add 36 to the number set. Current number set: [36, 7], target: 29, just two numbers left.
     |- Try 36 + 7 = 43. Evaluate 43 != 29, drop this branch.
     |- Try 36 - 7 = 29. Evaluate 29 == 29, target found!

Now we have found the target, let's trace back the solution:
Final step: 36 - 7 = 29
The step before: 59 - 23 = 36
The first step: 40 + 19 = 59

Output the solution in the required format:
<Solution>
40 + 19 = 59
59 - 23 = 36
36 - 7 = 29
</Solution>

# Example
Numbers: [9, 16, 6, 18]
Target: 12

# Search Procedure
Initial number set: [9, 16, 6, 18], target: 12. Options for choosing two numbers: [(9, 16), (9, 6), (9, 18), (16, 6), (16, 18), (6, 18)].
 |- Pick two numbers (9, 16) (numbers left: [6, 18]). Try possible operations.
  |- Try 16 + 9 = 25. Add 25 to the number set. Current number set: [25, 6, 18], target: 12. Options for choosing two numbers: [(25, 6), (25, 18), (6, 18)].
   |- Pick two numbers (25, 6) (numbers left: [18]). Try possible operations.
    |- Try 25 + 6 = 31. Add 31 to the number set. Current number set: [31, 18], target: 12, just two numbers left.
     |- Try 31 + 18 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 31 - 18 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 31 * 18 = 558. Evaluate 558 != 12, drop this branch.
     |- Try 31 / 18 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 25 - 6 = 19. Add 19 to the number set. Current number set: [19, 18], target: 12, just two numbers left.
     |- Try 19 + 18 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 19 - 18 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 19 * 18 = 342. Evaluate 342 != 12, drop this branch.
     |- Try 19 / 18 = 1.1. 1.1 is a decimal, drop this branch.
    |- Try 25 * 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
   |- Pick two numbers (25, 18) (numbers left: [6]). Try possible operations.
    |- Try 25 + 18 = 43. Add 43 to the number set. Current number set: [43, 6], target: 12, just two numbers left.
     |- Try 43 + 6 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 43 - 6 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 43 * 6 = 258. Evaluate 258 != 12, drop this branch.
     |- Try 43 / 6 = 7.2. 7.2 is a decimal, drop this branch.
    |- Try 25 - 18 = 7. Add 7 to the number set. Current number set: [7, 6], target: 12, just two numbers left.
     |- Try 7 + 6 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 7 - 6 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 7 * 6 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
    |- Try 25 * 18 = 450. Add 450 to the number set. Current number set: [450, 6], target: 12, just two numbers left.
     |- Try 450 + 6 = 456. Evaluate 456 != 12, drop this branch.
     |- Try 450 - 6 = 444. Evaluate 444 != 12, drop this branch.
     |- Try 450 * 6 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 450 / 6 = 75. Evaluate 75 != 12, drop this branch.
    |- Try 25 / 18 = 1.4. 1.4 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [25]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 25], target: 12, just two numbers left.
     |- Try 25 + 24 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 25 - 24 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 25 * 24 = 600. Evaluate 600 != 12, drop this branch.
     |- Try 25 / 24 = 1.0. 1.0 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 25], target: 12, just two numbers left.
     |- Try 25 + 12 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 25 - 12 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 25 * 12 = 300. Evaluate 300 != 12, drop this branch.
     |- Try 25 / 12 = 2.1. 2.1 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 25], target: 12, just two numbers left.
     |- Try 108 + 25 = 133. Evaluate 133 != 12, drop this branch.
     |- Try 108 - 25 = 83. Evaluate 83 != 12, drop this branch.
     |- Try 108 * 25 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 108 / 25 = 4.3. 4.3 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 25], target: 12, just two numbers left.
     |- Try 25 + 3 = 28. Evaluate 28 != 12, drop this branch.
     |- Try 25 - 3 = 22. Evaluate 22 != 12, drop this branch.
     |- Try 25 * 3 = 75. Evaluate 75 != 12, drop this branch.
     |- Try 25 / 3 = 8.3. 8.3 is a decimal, drop this branch.
  |- Try 16 - 9 = 7. Add 7 to the number set. Current number set: [7, 6, 18], target: 12. Options for choosing two numbers: [(7, 6), (7, 18), (6, 18)].
   |- Pick two numbers (7, 6) (numbers left: [18]). Try possible operations.
    |- Try 7 + 6 = 13. Add 13 to the number set. Current number set: [13, 18], target: 12, just two numbers left.
     |- Try 18 + 13 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 18 - 13 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 18 * 13 = 234. Evaluate 234 != 12, drop this branch.
     |- Try 18 / 13 = 1.4. 1.4 is a decimal, drop this branch.
    |- Try 7 - 6 = 1. Add 1 to the number set. Current number set: [1, 18], target: 12, just two numbers left.
     |- Try 18 + 1 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 18 - 1 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 18 * 1 = 18. Evaluate 18 != 12, drop this branch.
     |- Try 18 / 1 = 18. Evaluate 18 != 12, drop this branch.
    |- Try 7 * 6 = 42. Add 42 to the number set. Current number set: [42, 18], target: 12, just two numbers left.
     |- Try 42 + 18 = 60. Evaluate 60 != 12, drop this branch.
     |- Try 42 - 18 = 24. Evaluate 24 != 12, drop this branch.
     |- Try 42 * 18 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 42 / 18 = 2.3. 2.3 is a decimal, drop this branch.
    |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
   |- Pick two numbers (7, 18) (numbers left: [6]). Try possible operations.
    |- Try 18 + 7 = 25. Add 25 to the number set. Current number set: [25, 6], target: 12, just two numbers left.
     |- Try 25 + 6 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 25 - 6 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 25 * 6 = 150. Evaluate 150 != 12, drop this branch.
     |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
    |- Try 18 - 7 = 11. Add 11 to the number set. Current number set: [11, 6], target: 12, just two numbers left.
     |- Try 11 + 6 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 11 - 6 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 11 * 6 = 66. Evaluate 66 != 12, drop this branch.
     |- Try 11 / 6 = 1.8. 1.8 is a decimal, drop this branch.
    |- Try 18 * 7 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 18 / 7 = 2.6. 2.6 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [7]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 7], target: 12, just two numbers left.
     |- Try 24 + 7 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 24 - 7 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 24 * 7 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 24 / 7 = 3.4. 3.4 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 7], target: 12, just two numbers left.
     |- Try 12 + 7 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 12 - 7 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 12 * 7 = 84. Evaluate 84 != 12, drop this branch.
     |- Try 12 / 7 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 7], target: 12, just two numbers left.
     |- Try 108 + 7 = 115. Evaluate 115 != 12, drop this branch.
     |- Try 108 - 7 = 101. Evaluate 101 != 12, drop this branch.
     |- Try 108 * 7 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 108 / 7 = 15.4. 15.4 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 7], target: 12, just two numbers left.
     |- Try 7 + 3 = 10. Evaluate 10 != 12, drop this branch.
     |- Try 7 - 3 = 4. Evaluate 4 != 12, drop this branch.
     |- Try 7 * 3 = 21. Evaluate 21 != 12, drop this branch.
     |- Try 7 / 3 = 2.3. 2.3 is a decimal, drop this branch.
  |- Try 16 * 9 = 144. Add 144 to the number set. Current number set: [144, 6, 18], target: 12. Options for choosing two numbers: [(144, 6), (144, 18), (6, 18)].
   |- Pick two numbers (144, 6) (numbers left: [18]). Try possible operations.
    |- Try 144 + 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 144 - 6 = 138. Add 138 to the number set. Current number set: [138, 18], target: 12, just two numbers left.
     |- Try 138 + 18 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 138 - 18 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 138 * 18 = 2484. 2484 exceeds the maximum intermediate result, drop this branch.
     |- Try 138 / 18 = 7.7. 7.7 is a decimal, drop this branch.
    |- Try 144 * 6 = 864. Add 864 to the number set. Current number set: [864, 18], target: 12, just two numbers left.
     |- Try 864 + 18 = 882. Evaluate 882 != 12, drop this branch.
     |- Try 864 - 18 = 846. Evaluate 846 != 12, drop this branch.
     |- Try 864 * 18 = 15552. 15552 exceeds the maximum intermediate result, drop this branch.
     |- Try 864 / 18 = 48. Evaluate 48 != 12, drop this branch.
    |- Try 144 / 6 = 24. Add 24 to the number set. Current number set: [24, 18], target: 12, just two numbers left.
     |- Try 24 + 18 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 24 - 18 = 6. Evaluate 6 != 12, drop this branch.
     |- Try 24 * 18 = 432. Evaluate 432 != 12, drop this branch.
     |- Try 24 / 18 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (144, 18) (numbers left: [6]). Try possible operations.
    |- Try 144 + 18 = 162. Add 162 to the number set. Current number set: [162, 6], target: 12, just two numbers left.
     |- Try 162 + 6 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 162 - 6 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 162 * 6 = 972. Evaluate 972 != 12, drop this branch.
     |- Try 162 / 6 = 27. Evaluate 27 != 12, drop this branch.
    |- Try 144 - 18 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 144 * 18 = 2592. 2592 exceeds the maximum intermediate result, drop this branch.
    |- Try 144 / 18 = 8. Add 8 to the number set. Current number set: [8, 6], target: 12, just two numbers left.
     |- Try 8 + 6 = 14. Evaluate 14 != 12, drop this branch.
     |- Try 8 - 6 = 2. Evaluate 2 != 12, drop this branch.
     |- Try 8 * 6 = 48. Evaluate 48 != 12, drop this branch.
     |- Try 8 / 6 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [144]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 144], target: 12, just two numbers left.
     |- Try 144 + 24 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 144 - 24 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 144 * 24 = 3456. 3456 exceeds the maximum intermediate result, drop this branch.
     |- Try 144 / 24 = 6. Evaluate 6 != 12, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 144], target: 12, just two numbers left.
     |- Try 144 + 12 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 144 - 12 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 144 * 12 = 1728. Evaluate 1728 != 12, drop this branch.
     |- Try 144 / 12 = 12. Evaluate 12 == 12, target found!

Now we have found the target, let's trace back the solution:
Final step: 144 / 12 = 12
The step before: 18 - 6 = 12
The first step: 16 * 9 = 144

Output the solution in the required format:
<Solution>
16 * 9 = 144
18 - 6 = 12
144 / 12 = 12
</Solution>

[Problem]
Now, solve the following problem. Note that:
- Please carefully read the approach and examples provided above, and follow them to solve the problem.
- Please ALWAYS include your search procedure (after # Search Procedure). The search procedure should follow the format of the examples provided above.
- Please mark your answer with <Solution> and </Solution> tags. The solution should be a sequence of three equations exactly following the format of the examples above, with no additional text in between.

Numbers: [19, 38, 8, 4]
Target: 23

# Search Procedure
Initial number set: [19, 38, 8, 4], target: 23. Options for choosing two numbers: [(19, 38), (19, 8), (19, 4), (38, 8), (38, 4), (8, 4)].
 |- Pick two numbers (19, 38) (numbers left: [8, 4]). Try possible operations.
  |- Try 38 + 19 = 57. Add 57 to the number set. Current number set: [57, 8, 4], target: 23. Options for choosing two numbers: [(57, 8), (57, 4), (8, 4)].
   |- Pick two numbers (57, 8) (numbers left: [4]). Try possible operations.
    |- Try 57 + 8 = 65. Add 65 to the number set. Current number set: [65, 4], target: 23, just two numbers left.
     |- Try 65 + 4 = 69. Evaluate 69 != 23, drop this branch.
     |- Try 65 - 4 = 61. Evaluate 61 != 23, drop this branch.
     |- Try 65 * 4 = 260. Evaluate 260 != 23, drop this branch.
     |- Try 65 / 4 = 16.2. 16.2 is a decimal, drop this branch.
    |- Try 57 - 8 = 49. Add 49 to the number set. Current number set: [49, 4], target: 23, just two numbers left.
     |- Try 49 + 4 = 53. Evaluate 53 != 23, drop this branch.
     |- Try 49 - 4 = 45. Evaluate 45 != 23, drop this branch.
     |- Try 49 * 4 = 196. Evaluate 196 != 23, drop this branch.
     |- Try 49 / 4 = 12.2. 12.2 is a decimal, drop this branch.
    |- Try 57 * 8 = 456. Add 456 to the number set. Current number set: [456, 4], target: 23, just two numbers left.
     |- Try 456 + 4 = 460. Evaluate 460 != 23, drop this branch.
     |- Try 456 - 4 = 452. Evaluate 452 != 23, drop this branch.
     |- Try 456 * 4 = 1824. Evaluate 1824 != 23, drop this branch.
     |- Try 456 / 4 = 114. Evaluate 114 != 23, drop this branch.
    |- Try 57 / 8 = 7.1. 7.1 is a decimal, drop this branch.
   |- Pick two numbers (57, 4) (numbers left: [8]). Try possible operations.
    |- Try 57 + 4 = 61. Add 61 to the number set. Current number set: [61, 8], target: 23, just two numbers left.
     |- Try 61 + 8 = 69. Evaluate 69 != 23, drop this branch.
     |- Try 61 - 8 = 53. Evaluate 53 != 23, drop this branch.
     |- Try 61 * 8 = 488. Evaluate 488 != 23, drop this branch.
     |- Try 61 / 8 = 7.6. 7.6 is a decimal, drop this branch.
    |- Try 57 - 4 = 53. Add 53 to the number set. Current number set: [53, 8], target: 23, just two numbers left.
     |- Try 53 + 8 = 61. Evaluate 61 != 23, drop this branch.
     |- Try 53 - 8 = 45. Evaluate 45 != 23, drop this branch.
     |- Try 53 * 8 = 424. Evaluate 424 != 23, drop this branch.
     |- Try 53 / 8 = 6.6. 6.6 is a decimal, drop this branch.
    |- Try 57 * 4 = 228. Add 228 to the number set. Current number set: [228, 8], target: 23, just two numbers left.
     |- Try 228 + 8 = 236. Evaluate 236 != 23, drop this branch.
     |- Try 228 - 8 = 220. Evaluate 220 != 23, drop this branch.
     |- Try 228 * 8 = 1824. Evaluate 1824 != 23, drop this branch.
     |- Try 228 / 8 = 28.5. 28.5 is a decimal, drop this branch.
    |- Try 57 / 4 = 14.2. 14.2 is a decimal, drop this branch.
   |- Pick two numbers (8, 4) (numbers left: [57]). Try possible operations.
    |- Try 8 + 4 = 12. Add 12 to the number set. Current number set: [12, 57], target: 23, just two numbers left.
     |- Try 57 + 12 = 69. Evaluate 69 != 23, drop this branch.
     |- Try 57 - 12 = 45. Evaluate 45 != 23, drop this branch.
     |- Try 57 * 12 = 684. Evaluate 684 != 23, drop this branch.
     |- Try 57 / 12 = 4.8. 4.8 is a decimal, drop this branch.
    |- Try 8 - 4 = 4. Add 4 to the number set. Current number set: [4, 57], target: 23, just two numbers left.
     |- Try 57 + 4 = 61. Evaluate 61 != 23, drop this branch.
     |- Try 57 - 4 = 53. Evaluate 53 != 23, drop this branch.
     |- Try 57 * 4 = 228. Evaluate 228 != 23, drop this branch.
     |- Try 57 / 4 = 14.2. 14.2 is a decimal, drop this branch.
    |- Try 8 * 4 = 32. Add 32 to the number set. Current number set: [32, 57], target: 23, just two numbers left.
     |- Try 57 + 32 = 89. Evaluate 89 != 23, drop this branch.
     |- Try 57 - 32 = 25. Evaluate 25 != 23, drop this branch.
     |- Try 57 * 32 = 1824. Evaluate 1824 != 23, drop this branch.
     |- Try 57 / 32 = 1.8. 1.8 is a decimal, drop this branch.
    |- Try 8 / 4 = 2. Add 2 to the number set. Current number set: [2, 57], target: 23, just two numbers left.
     |- Try 57 + 2 = 59. Evaluate 59 != 23, drop this branch.
     |- Try 57 - 2 = 55. Evaluate 55 != 23, drop this branch.
     |- Try 57 * 2 = 114. Evaluate 114 != 23, drop this branch.
     |- Try 57 / 2 = 28.5. 28.5 is a decimal, drop this branch.
  |- Try 38 - 19 = 19. Add 19 to the number set. Current number set: [19, 8, 4], target: 23. Options for choosing two numbers: [(19, 8), (19, 4), (8, 4)].
   |- Pick two numbers (19, 8) (numbers left: [4]). Try possible operations.
    |- Try 19 + 8 = 27. Add 27 to the number set. Current number set: [27, 4], target: 23, just two numbers left.
     |- Try 27 + 4 = 31. Evaluate 31 != 23, drop this branch.
     |- Try 27 - 4 = 23. Evaluate 23 == 23, target found!

Now we have found the target, let's trace back the solution:
Final step: 27 - 4 = 23
The step before: 19 + 8 = 27
The first step: 38 - 19 = 19

Output the solution in the required format:
<Solution>
38 - 19 = 19
19 + 8 = 27
27 - 4 = 23
</Solution>

Solution:
38 - 19 = 19
19 + 8 = 27
27 - 4 = 23


[TASK]
You will be given four numbers and a target number, your task is to find a way to use all four numbers exactly once, along with the basic operations (+, -, *, /), to reach the target number.

[RULES]
- You can use each number exactly once.
- You can use the four basic operations (+, -, *, /).
- The intermediate results must be integers (no decimals allowed).
- The intermediate results must be positive.
- The intermediate results will not exceed 2000.

[APPROACH]
We will solve the problem by searching. Starting from a given set of four numbers, we will follow this search process:
- At each state, we will consider all possible number pairs (in order) from the current number set. Choose one pair and apply one of the four basic operations to them to obtain a new number.
  * If there are still numbers left, we will add the new number to the number set and continue the search.
  * If we have used all numbers, we will check if the new number is equal to the target number. If it is, we have found the solution. Otherwise, we will backtrack.
- Suppose the two numbers we choose are a and b (where a >= b). We will try the four options (a + b), (a - b), (a * b), (a / b) to obtain the new number. Remember to always use the larger number as the first operand.
- If the new number is a decimal, or exceeds the maximum intermediate result, we will discard this branch and backtrack.
- We will continue this process until we reach the target number with four numbers used or exhaust all possible combinations.

[EXAMPLES]
# Example
Numbers: [40, 19, 23, 7]
Target: 29

# Search Procedure
Initial number set: [40, 19, 23, 7], target: 29. Options for choosing two numbers: [(40, 19), (40, 23), (40, 7), (19, 23), (19, 7), (23, 7)].
 |- Pick two numbers (40, 19) (numbers left: [23, 7]). Try possible operations.
  |- Try 40 + 19 = 59. Add 59 to the number set. Current number set: [59, 23, 7], target: 29. Options for choosing two numbers: [(59, 23), (59, 7), (23, 7)].
   |- Pick two numbers (59, 23) (numbers left: [7]). Try possible operations.
    |- Try 59 + 23 = 82. Add 82 to the number set. Current number set: [82, 7], target: 29, just two numbers left.
     |- Try 82 + 7 = 89. Evaluate 89 != 29, drop this branch.
     |- Try 82 - 7 = 75. Evaluate 75 != 29, drop this branch.
     |- Try 82 * 7 = 574. Evaluate 574 != 29, drop this branch.
     |- Try 82 / 7 = 11.7. 11.7 is a decimal, drop this branch.
    |- Try 59 - 23 = 36. Add 36 to the number set. Current number set: [36, 7], target: 29, just two numbers left.
     |- Try 36 + 7 = 43. Evaluate 43 != 29, drop this branch.
     |- Try 36 - 7 = 29. Evaluate 29 == 29, target found!

Now we have found the target, let's trace back the solution:
Final step: 36 - 7 = 29
The step before: 59 - 23 = 36
The first step: 40 + 19 = 59

Output the solution in the required format:
<Solution>
40 + 19 = 59
59 - 23 = 36
36 - 7 = 29
</Solution>

# Example
Numbers: [9, 16, 6, 18]
Target: 12

# Search Procedure
Initial number set: [9, 16, 6, 18], target: 12. Options for choosing two numbers: [(9, 16), (9, 6), (9, 18), (16, 6), (16, 18), (6, 18)].
 |- Pick two numbers (9, 16) (numbers left: [6, 18]). Try possible operations.
  |- Try 16 + 9 = 25. Add 25 to the number set. Current number set: [25, 6, 18], target: 12. Options for choosing two numbers: [(25, 6), (25, 18), (6, 18)].
   |- Pick two numbers (25, 6) (numbers left: [18]). Try possible operations.
    |- Try 25 + 6 = 31. Add 31 to the number set. Current number set: [31, 18], target: 12, just two numbers left.
     |- Try 31 + 18 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 31 - 18 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 31 * 18 = 558. Evaluate 558 != 12, drop this branch.
     |- Try 31 / 18 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 25 - 6 = 19. Add 19 to the number set. Current number set: [19, 18], target: 12, just two numbers left.
     |- Try 19 + 18 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 19 - 18 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 19 * 18 = 342. Evaluate 342 != 12, drop this branch.
     |- Try 19 / 18 = 1.1. 1.1 is a decimal, drop this branch.
    |- Try 25 * 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
   |- Pick two numbers (25, 18) (numbers left: [6]). Try possible operations.
    |- Try 25 + 18 = 43. Add 43 to the number set. Current number set: [43, 6], target: 12, just two numbers left.
     |- Try 43 + 6 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 43 - 6 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 43 * 6 = 258. Evaluate 258 != 12, drop this branch.
     |- Try 43 / 6 = 7.2. 7.2 is a decimal, drop this branch.
    |- Try 25 - 18 = 7. Add 7 to the number set. Current number set: [7, 6], target: 12, just two numbers left.
     |- Try 7 + 6 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 7 - 6 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 7 * 6 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
    |- Try 25 * 18 = 450. Add 450 to the number set. Current number set: [450, 6], target: 12, just two numbers left.
     |- Try 450 + 6 = 456. Evaluate 456 != 12, drop this branch.
     |- Try 450 - 6 = 444. Evaluate 444 != 12, drop this branch.
     |- Try 450 * 6 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 450 / 6 = 75. Evaluate 75 != 12, drop this branch.
    |- Try 25 / 18 = 1.4. 1.4 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [25]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 25], target: 12, just two numbers left.
     |- Try 25 + 24 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 25 - 24 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 25 * 24 = 600. Evaluate 600 != 12, drop this branch.
     |- Try 25 / 24 = 1.0. 1.0 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 25], target: 12, just two numbers left.
     |- Try 25 + 12 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 25 - 12 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 25 * 12 = 300. Evaluate 300 != 12, drop this branch.
     |- Try 25 / 12 = 2.1. 2.1 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 25], target: 12, just two numbers left.
     |- Try 108 + 25 = 133. Evaluate 133 != 12, drop this branch.
     |- Try 108 - 25 = 83. Evaluate 83 != 12, drop this branch.
     |- Try 108 * 25 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 108 / 25 = 4.3. 4.3 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 25], target: 12, just two numbers left.
     |- Try 25 + 3 = 28. Evaluate 28 != 12, drop this branch.
     |- Try 25 - 3 = 22. Evaluate 22 != 12, drop this branch.
     |- Try 25 * 3 = 75. Evaluate 75 != 12, drop this branch.
     |- Try 25 / 3 = 8.3. 8.3 is a decimal, drop this branch.
  |- Try 16 - 9 = 7. Add 7 to the number set. Current number set: [7, 6, 18], target: 12. Options for choosing two numbers: [(7, 6), (7, 18), (6, 18)].
   |- Pick two numbers (7, 6) (numbers left: [18]). Try possible operations.
    |- Try 7 + 6 = 13. Add 13 to the number set. Current number set: [13, 18], target: 12, just two numbers left.
     |- Try 18 + 13 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 18 - 13 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 18 * 13 = 234. Evaluate 234 != 12, drop this branch.
     |- Try 18 / 13 = 1.4. 1.4 is a decimal, drop this branch.
    |- Try 7 - 6 = 1. Add 1 to the number set. Current number set: [1, 18], target: 12, just two numbers left.
     |- Try 18 + 1 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 18 - 1 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 18 * 1 = 18. Evaluate 18 != 12, drop this branch.
     |- Try 18 / 1 = 18. Evaluate 18 != 12, drop this branch.
    |- Try 7 * 6 = 42. Add 42 to the number set. Current number set: [42, 18], target: 12, just two numbers left.
     |- Try 42 + 18 = 60. Evaluate 60 != 12, drop this branch.
     |- Try 42 - 18 = 24. Evaluate 24 != 12, drop this branch.
     |- Try 42 * 18 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 42 / 18 = 2.3. 2.3 is a decimal, drop this branch.
    |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
   |- Pick two numbers (7, 18) (numbers left: [6]). Try possible operations.
    |- Try 18 + 7 = 25. Add 25 to the number set. Current number set: [25, 6], target: 12, just two numbers left.
     |- Try 25 + 6 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 25 - 6 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 25 * 6 = 150. Evaluate 150 != 12, drop this branch.
     |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
    |- Try 18 - 7 = 11. Add 11 to the number set. Current number set: [11, 6], target: 12, just two numbers left.
     |- Try 11 + 6 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 11 - 6 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 11 * 6 = 66. Evaluate 66 != 12, drop this branch.
     |- Try 11 / 6 = 1.8. 1.8 is a decimal, drop this branch.
    |- Try 18 * 7 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 18 / 7 = 2.6. 2.6 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [7]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 7], target: 12, just two numbers left.
     |- Try 24 + 7 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 24 - 7 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 24 * 7 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 24 / 7 = 3.4. 3.4 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 7], target: 12, just two numbers left.
     |- Try 12 + 7 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 12 - 7 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 12 * 7 = 84. Evaluate 84 != 12, drop this branch.
     |- Try 12 / 7 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 7], target: 12, just two numbers left.
     |- Try 108 + 7 = 115. Evaluate 115 != 12, drop this branch.
     |- Try 108 - 7 = 101. Evaluate 101 != 12, drop this branch.
     |- Try 108 * 7 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 108 / 7 = 15.4. 15.4 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 7], target: 12, just two numbers left.
     |- Try 7 + 3 = 10. Evaluate 10 != 12, drop this branch.
     |- Try 7 - 3 = 4. Evaluate 4 != 12, drop this branch.
     |- Try 7 * 3 = 21. Evaluate 21 != 12, drop this branch.
     |- Try 7 / 3 = 2.3. 2.3 is a decimal, drop this branch.
  |- Try 16 * 9 = 144. Add 144 to the number set. Current number set: [144, 6, 18], target: 12. Options for choosing two numbers: [(144, 6), (144, 18), (6, 18)].
   |- Pick two numbers (144, 6) (numbers left: [18]). Try possible operations.
    |- Try 144 + 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 144 - 6 = 138. Add 138 to the number set. Current number set: [138, 18], target: 12, just two numbers left.
     |- Try 138 + 18 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 138 - 18 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 138 * 18 = 2484. 2484 exceeds the maximum intermediate result, drop this branch.
     |- Try 138 / 18 = 7.7. 7.7 is a decimal, drop this branch.
    |- Try 144 * 6 = 864. Add 864 to the number set. Current number set: [864, 18], target: 12, just two numbers left.
     |- Try 864 + 18 = 882. Evaluate 882 != 12, drop this branch.
     |- Try 864 - 18 = 846. Evaluate 846 != 12, drop this branch.
     |- Try 864 * 18 = 15552. 15552 exceeds the maximum intermediate result, drop this branch.
     |- Try 864 / 18 = 48. Evaluate 48 != 12, drop this branch.
    |- Try 144 / 6 = 24. Add 24 to the number set. Current number set: [24, 18], target: 12, just two numbers left.
     |- Try 24 + 18 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 24 - 18 = 6. Evaluate 6 != 12, drop this branch.
     |- Try 24 * 18 = 432. Evaluate 432 != 12, drop this branch.
     |- Try 24 / 18 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (144, 18) (numbers left: [6]). Try possible operations.
    |- Try 144 + 18 = 162. Add 162 to the number set. Current number set: [162, 6], target: 12, just two numbers left.
     |- Try 162 + 6 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 162 - 6 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 162 * 6 = 972. Evaluate 972 != 12, drop this branch.
     |- Try 162 / 6 = 27. Evaluate 27 != 12, drop this branch.
    |- Try 144 - 18 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 144 * 18 = 2592. 2592 exceeds the maximum intermediate result, drop this branch.
    |- Try 144 / 18 = 8. Add 8 to the number set. Current number set: [8, 6], target: 12, just two numbers left.
     |- Try 8 + 6 = 14. Evaluate 14 != 12, drop this branch.
     |- Try 8 - 6 = 2. Evaluate 2 != 12, drop this branch.
     |- Try 8 * 6 = 48. Evaluate 48 != 12, drop this branch.
     |- Try 8 / 6 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [144]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 144], target: 12, just two numbers left.
     |- Try 144 + 24 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 144 - 24 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 144 * 24 = 3456. 3456 exceeds the maximum intermediate result, drop this branch.
     |- Try 144 / 24 = 6. Evaluate 6 != 12, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 144], target: 12, just two numbers left.
     |- Try 144 + 12 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 144 - 12 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 144 * 12 = 1728. Evaluate 1728 != 12, drop this branch.
     |- Try 144 / 12 = 12. Evaluate 12 == 12, target found!

Now we have found the target, let's trace back the solution:
Final step: 144 / 12 = 12
The step before: 18 - 6 = 12
The first step: 16 * 9 = 144

Output the solution in the required format:
<Solution>
16 * 9 = 144
18 - 6 = 12
144 / 12 = 12
</Solution>

[Problem]
Now, solve the following problem. Note that:
- Please carefully read the approach and examples provided above, and follow them to solve the problem.
- Please ALWAYS include your search procedure (after # Search Procedure). The search procedure should follow the format of the examples provided above.
- Please mark your answer with <Solution> and </Solution> tags. The solution should be a sequence of three equations exactly following the format of the examples above, with no additional text in between.

Numbers: [37, 28, 44, 21]
Target: 32

# Search Procedure
Initial number set: [37, 28, 44, 21], target: 32. Options for choosing two numbers: [(37, 28), (37, 44), (37, 21), (28, 44), (28, 21), (44, 21)].
 |- Pick two numbers (37, 28) (numbers left: [44, 21]). Try possible operations.
  |- Try 37 + 28 = 65. Add 65 to the number set. Current number set: [65, 44, 21], target: 32. Options for choosing two numbers: [(65, 44), (65, 21), (44, 21)].
   |- Pick two numbers (65, 44) (numbers left: [21]). Try possible operations.
    |- Try 65 + 44 = 109. Add 109 to the number set. Current number set: [109, 21], target: 32, just two numbers left.
     |- Try 109 + 21 = 130. Evaluate 130 != 32, drop this branch.
     |- Try 109 - 21 = 88. Evaluate 88 != 32, drop this branch.
     |- Try 109 * 21 = 2289. 2289 exceeds the maximum intermediate result, drop this branch.
     |- Try 109 / 21 = 5.2. 5.2 is a decimal, drop this branch.
    |- Try 65 - 44 = 21. Add 21 to the number set. Current number set: [21, 21], target: 32, just two numbers left.
     |- Try 21 + 21 = 42. Evaluate 42 != 32, drop this branch.
     |- Try 21 - 21 = 0. Evaluate 0 != 32, drop this branch.
     |- Try 21 * 21 = 441. Evaluate 441 != 32, drop this branch.
     |- Try 21 / 21 = 1. Evaluate 1 != 32, drop this branch.
    |- Try 65 * 44 = 2860. 2860 exceeds the maximum intermediate result, drop this branch.
    |- Try 65 / 44 = 1.5. 1.5 is a decimal, drop this branch.
   |- Pick two numbers (65, 21) (numbers left: [44]). Try possible operations.
    |- Try 65 + 21 = 86. Add 86 to the number set. Current number set: [86, 44], target: 32, just two numbers left.
     |- Try 86 + 44 = 130. Evaluate 130 != 32, drop this branch.
     |- Try 86 - 44 = 42. Evaluate 42 != 32, drop this branch.
     |- Try 86 * 44 = 3784. 3784 exceeds the maximum intermediate result, drop this branch.
     |- Try 86 / 44 = 2.0. 2.0 is a decimal, drop this branch.
    |- Try 65 - 21 = 44. Add 44 to the number set. Current number set: [44, 44], target: 32, just two numbers left.
     |- Try 44 + 44 = 88. Evaluate 88 != 32, drop this branch.
     |- Try 44 - 44 = 0. Evaluate 0 != 32, drop this branch.
     |- Try 44 * 44 = 1936. Evaluate 1936 != 32, drop this branch.
     |- Try 44 / 44 = 1. Evaluate 1 != 32, drop this branch.
    |- Try 65 * 21 = 1365. Add 1365 to the number set. Current number set: [1365, 44], target: 32, just two numbers left.
     |- Try 1365 + 44 = 1409. Evaluate 1409 != 32, drop this branch.
     |- Try 1365 - 44 = 1321. Evaluate 1321 != 32, drop this branch.
     |- Try 1365 * 44 = 60060. 60060 exceeds the maximum intermediate result, drop this branch.
     |- Try 1365 / 44 = 31.0. 31.0 is a decimal, drop this branch.
    |- Try 65 / 21 = 3.1. 3.1 is a decimal, drop this branch.
   |- Pick two numbers (44, 21) (numbers left: [65]). Try possible operations.
    |- Try 44 + 21 = 65. Add 65 to the number set. Current number set: [65, 65], target: 32, just two numbers left.
     |- Try 65 + 65 = 130. Evaluate 130 != 32, drop this branch.
     |- Try 65 - 65 = 0. Evaluate 0 != 32, drop this branch.
     |- Try 65 * 65 = 4225. 4225 exceeds the maximum intermediate result, drop this branch.
     |- Try 65 / 65 = 1. Evaluate 1 != 32, drop this branch.
    |- Try 44 - 21 = 23. Add 23 to the number set. Current number set: [23, 65], target: 32, just two numbers left.
     |- Try 65 + 23 = 88. Evaluate 88 != 32, drop this branch.
     |- Try 65 - 23 = 42. Evaluate 42 != 32, drop this branch.
     |- Try 65 * 23 = 1495. Evaluate 1495 != 32, drop this branch.
     |- Try 65 / 23 = 2.8. 2.8 is a decimal, drop this branch.
    |- Try 44 * 21 = 924. Add 924 to the number set. Current number set: [924, 65], target: 32, just two numbers left.
     |- Try 924 + 65 = 989. Evaluate 989 != 32, drop this branch.
     |- Try 924 - 65 = 859. Evaluate 859 != 32, drop this branch.
     |- Try 924 * 65 = 60060. 60060 exceeds the maximum intermediate result, drop this branch.
     |- Try 924 / 65 = 14.2. 14.2 is a decimal, drop this branch.
    |- Try 44 / 21 = 2.1. 2.1 is a decimal, drop this branch.
  |- Try 37 - 28 = 9. Add 9 to the number set. Current number set: [9, 44, 21], target: 32. Options for choosing two numbers: [(9, 44), (9, 21), (44, 21)].
   |- Pick two numbers (9, 44) (numbers left: [21]). Try possible operations.
    |- Try 44 + 9 = 53. Add 53 to the number set. Current number set: [53, 21], target: 32, just two numbers left.
     |- Try 53 + 21 = 74. Evaluate 74 != 32, drop this branch.
     |- Try 53 - 21 = 32. Evaluate 32 == 32, target found!

Now we have found the target, let's trace back the solution:
Final step: 53 - 21 = 32
The step before: 44 + 9 = 53
The first step: 37 - 28 = 9

Output the solution in the required format:
<Solution>
37 - 28 = 9
44 + 9 = 53
53 - 21 = 32
</Solution>

Solution:
37 - 28 = 9
44 + 9 = 53
53 - 21 = 32


[TASK]
You will be given four numbers and a target number, your task is to find a way to use all four numbers exactly once, along with the basic operations (+, -, *, /), to reach the target number.

[RULES]
- You can use each number exactly once.
- You can use the four basic operations (+, -, *, /).
- The intermediate results must be integers (no decimals allowed).
- The intermediate results must be positive.
- The intermediate results will not exceed 2000.

[APPROACH]
We will solve the problem by searching. Starting from a given set of four numbers, we will follow this search process:
- At each state, we will consider all possible number pairs (in order) from the current number set. Choose one pair and apply one of the four basic operations to them to obtain a new number.
  * If there are still numbers left, we will add the new number to the number set and continue the search.
  * If we have used all numbers, we will check if the new number is equal to the target number. If it is, we have found the solution. Otherwise, we will backtrack.
- Suppose the two numbers we choose are a and b (where a >= b). We will try the four options (a + b), (a - b), (a * b), (a / b) to obtain the new number. Remember to always use the larger number as the first operand.
- If the new number is a decimal, or exceeds the maximum intermediate result, we will discard this branch and backtrack.
- We will continue this process until we reach the target number with four numbers used or exhaust all possible combinations.

[EXAMPLES]
# Example
Numbers: [40, 19, 23, 7]
Target: 29

# Search Procedure
Initial number set: [40, 19, 23, 7], target: 29. Options for choosing two numbers: [(40, 19), (40, 23), (40, 7), (19, 23), (19, 7), (23, 7)].
 |- Pick two numbers (40, 19) (numbers left: [23, 7]). Try possible operations.
  |- Try 40 + 19 = 59. Add 59 to the number set. Current number set: [59, 23, 7], target: 29. Options for choosing two numbers: [(59, 23), (59, 7), (23, 7)].
   |- Pick two numbers (59, 23) (numbers left: [7]). Try possible operations.
    |- Try 59 + 23 = 82. Add 82 to the number set. Current number set: [82, 7], target: 29, just two numbers left.
     |- Try 82 + 7 = 89. Evaluate 89 != 29, drop this branch.
     |- Try 82 - 7 = 75. Evaluate 75 != 29, drop this branch.
     |- Try 82 * 7 = 574. Evaluate 574 != 29, drop this branch.
     |- Try 82 / 7 = 11.7. 11.7 is a decimal, drop this branch.
    |- Try 59 - 23 = 36. Add 36 to the number set. Current number set: [36, 7], target: 29, just two numbers left.
     |- Try 36 + 7 = 43. Evaluate 43 != 29, drop this branch.
     |- Try 36 - 7 = 29. Evaluate 29 == 29, target found!

Now we have found the target, let's trace back the solution:
Final step: 36 - 7 = 29
The step before: 59 - 23 = 36
The first step: 40 + 19 = 59

Output the solution in the required format:
<Solution>
40 + 19 = 59
59 - 23 = 36
36 - 7 = 29
</Solution>

# Example
Numbers: [9, 16, 6, 18]
Target: 12

# Search Procedure
Initial number set: [9, 16, 6, 18], target: 12. Options for choosing two numbers: [(9, 16), (9, 6), (9, 18), (16, 6), (16, 18), (6, 18)].
 |- Pick two numbers (9, 16) (numbers left: [6, 18]). Try possible operations.
  |- Try 16 + 9 = 25. Add 25 to the number set. Current number set: [25, 6, 18], target: 12. Options for choosing two numbers: [(25, 6), (25, 18), (6, 18)].
   |- Pick two numbers (25, 6) (numbers left: [18]). Try possible operations.
    |- Try 25 + 6 = 31. Add 31 to the number set. Current number set: [31, 18], target: 12, just two numbers left.
     |- Try 31 + 18 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 31 - 18 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 31 * 18 = 558. Evaluate 558 != 12, drop this branch.
     |- Try 31 / 18 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 25 - 6 = 19. Add 19 to the number set. Current number set: [19, 18], target: 12, just two numbers left.
     |- Try 19 + 18 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 19 - 18 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 19 * 18 = 342. Evaluate 342 != 12, drop this branch.
     |- Try 19 / 18 = 1.1. 1.1 is a decimal, drop this branch.
    |- Try 25 * 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
   |- Pick two numbers (25, 18) (numbers left: [6]). Try possible operations.
    |- Try 25 + 18 = 43. Add 43 to the number set. Current number set: [43, 6], target: 12, just two numbers left.
     |- Try 43 + 6 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 43 - 6 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 43 * 6 = 258. Evaluate 258 != 12, drop this branch.
     |- Try 43 / 6 = 7.2. 7.2 is a decimal, drop this branch.
    |- Try 25 - 18 = 7. Add 7 to the number set. Current number set: [7, 6], target: 12, just two numbers left.
     |- Try 7 + 6 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 7 - 6 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 7 * 6 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
    |- Try 25 * 18 = 450. Add 450 to the number set. Current number set: [450, 6], target: 12, just two numbers left.
     |- Try 450 + 6 = 456. Evaluate 456 != 12, drop this branch.
     |- Try 450 - 6 = 444. Evaluate 444 != 12, drop this branch.
     |- Try 450 * 6 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 450 / 6 = 75. Evaluate 75 != 12, drop this branch.
    |- Try 25 / 18 = 1.4. 1.4 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [25]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 25], target: 12, just two numbers left.
     |- Try 25 + 24 = 49. Evaluate 49 != 12, drop this branch.
     |- Try 25 - 24 = 1. Evaluate 1 != 12, drop this branch.
     |- Try 25 * 24 = 600. Evaluate 600 != 12, drop this branch.
     |- Try 25 / 24 = 1.0. 1.0 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 25], target: 12, just two numbers left.
     |- Try 25 + 12 = 37. Evaluate 37 != 12, drop this branch.
     |- Try 25 - 12 = 13. Evaluate 13 != 12, drop this branch.
     |- Try 25 * 12 = 300. Evaluate 300 != 12, drop this branch.
     |- Try 25 / 12 = 2.1. 2.1 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 25], target: 12, just two numbers left.
     |- Try 108 + 25 = 133. Evaluate 133 != 12, drop this branch.
     |- Try 108 - 25 = 83. Evaluate 83 != 12, drop this branch.
     |- Try 108 * 25 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 108 / 25 = 4.3. 4.3 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 25], target: 12, just two numbers left.
     |- Try 25 + 3 = 28. Evaluate 28 != 12, drop this branch.
     |- Try 25 - 3 = 22. Evaluate 22 != 12, drop this branch.
     |- Try 25 * 3 = 75. Evaluate 75 != 12, drop this branch.
     |- Try 25 / 3 = 8.3. 8.3 is a decimal, drop this branch.
  |- Try 16 - 9 = 7. Add 7 to the number set. Current number set: [7, 6, 18], target: 12. Options for choosing two numbers: [(7, 6), (7, 18), (6, 18)].
   |- Pick two numbers (7, 6) (numbers left: [18]). Try possible operations.
    |- Try 7 + 6 = 13. Add 13 to the number set. Current number set: [13, 18], target: 12, just two numbers left.
     |- Try 18 + 13 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 18 - 13 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 18 * 13 = 234. Evaluate 234 != 12, drop this branch.
     |- Try 18 / 13 = 1.4. 1.4 is a decimal, drop this branch.
    |- Try 7 - 6 = 1. Add 1 to the number set. Current number set: [1, 18], target: 12, just two numbers left.
     |- Try 18 + 1 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 18 - 1 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 18 * 1 = 18. Evaluate 18 != 12, drop this branch.
     |- Try 18 / 1 = 18. Evaluate 18 != 12, drop this branch.
    |- Try 7 * 6 = 42. Add 42 to the number set. Current number set: [42, 18], target: 12, just two numbers left.
     |- Try 42 + 18 = 60. Evaluate 60 != 12, drop this branch.
     |- Try 42 - 18 = 24. Evaluate 24 != 12, drop this branch.
     |- Try 42 * 18 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 42 / 18 = 2.3. 2.3 is a decimal, drop this branch.
    |- Try 7 / 6 = 1.2. 1.2 is a decimal, drop this branch.
   |- Pick two numbers (7, 18) (numbers left: [6]). Try possible operations.
    |- Try 18 + 7 = 25. Add 25 to the number set. Current number set: [25, 6], target: 12, just two numbers left.
     |- Try 25 + 6 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 25 - 6 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 25 * 6 = 150. Evaluate 150 != 12, drop this branch.
     |- Try 25 / 6 = 4.2. 4.2 is a decimal, drop this branch.
    |- Try 18 - 7 = 11. Add 11 to the number set. Current number set: [11, 6], target: 12, just two numbers left.
     |- Try 11 + 6 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 11 - 6 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 11 * 6 = 66. Evaluate 66 != 12, drop this branch.
     |- Try 11 / 6 = 1.8. 1.8 is a decimal, drop this branch.
    |- Try 18 * 7 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 18 / 7 = 2.6. 2.6 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [7]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 7], target: 12, just two numbers left.
     |- Try 24 + 7 = 31. Evaluate 31 != 12, drop this branch.
     |- Try 24 - 7 = 17. Evaluate 17 != 12, drop this branch.
     |- Try 24 * 7 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 24 / 7 = 3.4. 3.4 is a decimal, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 7], target: 12, just two numbers left.
     |- Try 12 + 7 = 19. Evaluate 19 != 12, drop this branch.
     |- Try 12 - 7 = 5. Evaluate 5 != 12, drop this branch.
     |- Try 12 * 7 = 84. Evaluate 84 != 12, drop this branch.
     |- Try 12 / 7 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 18 * 6 = 108. Add 108 to the number set. Current number set: [108, 7], target: 12, just two numbers left.
     |- Try 108 + 7 = 115. Evaluate 115 != 12, drop this branch.
     |- Try 108 - 7 = 101. Evaluate 101 != 12, drop this branch.
     |- Try 108 * 7 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 108 / 7 = 15.4. 15.4 is a decimal, drop this branch.
    |- Try 18 / 6 = 3. Add 3 to the number set. Current number set: [3, 7], target: 12, just two numbers left.
     |- Try 7 + 3 = 10. Evaluate 10 != 12, drop this branch.
     |- Try 7 - 3 = 4. Evaluate 4 != 12, drop this branch.
     |- Try 7 * 3 = 21. Evaluate 21 != 12, drop this branch.
     |- Try 7 / 3 = 2.3. 2.3 is a decimal, drop this branch.
  |- Try 16 * 9 = 144. Add 144 to the number set. Current number set: [144, 6, 18], target: 12. Options for choosing two numbers: [(144, 6), (144, 18), (6, 18)].
   |- Pick two numbers (144, 6) (numbers left: [18]). Try possible operations.
    |- Try 144 + 6 = 150. Add 150 to the number set. Current number set: [150, 18], target: 12, just two numbers left.
     |- Try 150 + 18 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 150 - 18 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 150 * 18 = 2700. 2700 exceeds the maximum intermediate result, drop this branch.
     |- Try 150 / 18 = 8.3. 8.3 is a decimal, drop this branch.
    |- Try 144 - 6 = 138. Add 138 to the number set. Current number set: [138, 18], target: 12, just two numbers left.
     |- Try 138 + 18 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 138 - 18 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 138 * 18 = 2484. 2484 exceeds the maximum intermediate result, drop this branch.
     |- Try 138 / 18 = 7.7. 7.7 is a decimal, drop this branch.
    |- Try 144 * 6 = 864. Add 864 to the number set. Current number set: [864, 18], target: 12, just two numbers left.
     |- Try 864 + 18 = 882. Evaluate 882 != 12, drop this branch.
     |- Try 864 - 18 = 846. Evaluate 846 != 12, drop this branch.
     |- Try 864 * 18 = 15552. 15552 exceeds the maximum intermediate result, drop this branch.
     |- Try 864 / 18 = 48. Evaluate 48 != 12, drop this branch.
    |- Try 144 / 6 = 24. Add 24 to the number set. Current number set: [24, 18], target: 12, just two numbers left.
     |- Try 24 + 18 = 42. Evaluate 42 != 12, drop this branch.
     |- Try 24 - 18 = 6. Evaluate 6 != 12, drop this branch.
     |- Try 24 * 18 = 432. Evaluate 432 != 12, drop this branch.
     |- Try 24 / 18 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (144, 18) (numbers left: [6]). Try possible operations.
    |- Try 144 + 18 = 162. Add 162 to the number set. Current number set: [162, 6], target: 12, just two numbers left.
     |- Try 162 + 6 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 162 - 6 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 162 * 6 = 972. Evaluate 972 != 12, drop this branch.
     |- Try 162 / 6 = 27. Evaluate 27 != 12, drop this branch.
    |- Try 144 - 18 = 126. Add 126 to the number set. Current number set: [126, 6], target: 12, just two numbers left.
     |- Try 126 + 6 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 126 - 6 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 126 * 6 = 756. Evaluate 756 != 12, drop this branch.
     |- Try 126 / 6 = 21. Evaluate 21 != 12, drop this branch.
    |- Try 144 * 18 = 2592. 2592 exceeds the maximum intermediate result, drop this branch.
    |- Try 144 / 18 = 8. Add 8 to the number set. Current number set: [8, 6], target: 12, just two numbers left.
     |- Try 8 + 6 = 14. Evaluate 14 != 12, drop this branch.
     |- Try 8 - 6 = 2. Evaluate 2 != 12, drop this branch.
     |- Try 8 * 6 = 48. Evaluate 48 != 12, drop this branch.
     |- Try 8 / 6 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (6, 18) (numbers left: [144]). Try possible operations.
    |- Try 18 + 6 = 24. Add 24 to the number set. Current number set: [24, 144], target: 12, just two numbers left.
     |- Try 144 + 24 = 168. Evaluate 168 != 12, drop this branch.
     |- Try 144 - 24 = 120. Evaluate 120 != 12, drop this branch.
     |- Try 144 * 24 = 3456. 3456 exceeds the maximum intermediate result, drop this branch.
     |- Try 144 / 24 = 6. Evaluate 6 != 12, drop this branch.
    |- Try 18 - 6 = 12. Add 12 to the number set. Current number set: [12, 144], target: 12, just two numbers left.
     |- Try 144 + 12 = 156. Evaluate 156 != 12, drop this branch.
     |- Try 144 - 12 = 132. Evaluate 132 != 12, drop this branch.
     |- Try 144 * 12 = 1728. Evaluate 1728 != 12, drop this branch.
     |- Try 144 / 12 = 12. Evaluate 12 == 12, target found!

Now we have found the target, let's trace back the solution:
Final step: 144 / 12 = 12
The step before: 18 - 6 = 12
The first step: 16 * 9 = 144

Output the solution in the required format:
<Solution>
16 * 9 = 144
18 - 6 = 12
144 / 12 = 12
</Solution>

[Problem]
Now, solve the following problem. Note that:
- Please carefully read the approach and examples provided above, and follow them to solve the problem.
- Please ALWAYS include your search procedure (after # Search Procedure). The search procedure should follow the format of the examples provided above.
- Please mark your answer with <Solution> and </Solution> tags. The solution should be a sequence of three equations exactly following the format of the examples above, with no additional text in between.

Numbers: [10, 48, 43, 16]
Target: 21

# Search Procedure
Initial number set: [10, 48, 43, 16], target: 21. Options for choosing two numbers: [(10, 48), (10, 43), (10, 16), (48, 43), (48, 16), (43, 16)].
 |- Pick two numbers (10, 48) (numbers left: [43, 16]). Try possible operations.
  |- Try 48 + 10 = 58. Add 58 to the number set. Current number set: [58, 43, 16], target: 21. Options for choosing two numbers: [(58, 43), (58, 16), (43, 16)].
   |- Pick two numbers (58, 43) (numbers left: [16]). Try possible operations.
    |- Try 58 + 43 = 101. Add 101 to the number set. Current number set: [101, 16], target: 21, just two numbers left.
     |- Try 101 + 16 = 117. Evaluate 117 != 21, drop this branch.
     |- Try 101 - 16 = 85. Evaluate 85 != 21, drop this branch.
     |- Try 101 * 16 = 1616. Evaluate 1616 != 21, drop this branch.
     |- Try 101 / 16 = 6.3. 6.3 is a decimal, drop this branch.
    |- Try 58 - 43 = 15. Add 15 to the number set. Current number set: [15, 16], target: 21, just two numbers left.
     |- Try 16 + 15 = 31. Evaluate 31 != 21, drop this branch.
     |- Try 16 - 15 = 1. Evaluate 1 != 21, drop this branch.
     |- Try 16 * 15 = 240. Evaluate 240 != 21, drop this branch.
     |- Try 16 / 15 = 1.1. 1.1 is a decimal, drop this branch.
    |- Try 58 * 43 = 2494. 2494 exceeds the maximum intermediate result, drop this branch.
    |- Try 58 / 43 = 1.3. 1.3 is a decimal, drop this branch.
   |- Pick two numbers (58, 16) (numbers left: [43]). Try possible operations.
    |- Try 58 + 16 = 74. Add 74 to the number set. Current number set: [74, 43], target: 21, just two numbers left.
     |- Try 74 + 43 = 117. Evaluate 117 != 21, drop this branch.
     |- Try 74 - 43 = 31. Evaluate 31 != 21, drop this branch.
     |- Try 74 * 43 = 3182. 3182 exceeds the maximum intermediate result, drop this branch.
     |- Try 74 / 43 = 1.7. 1.7 is a decimal, drop this branch.
    |- Try 58 - 16 = 42. Add 42 to the number set. Current number set: [42, 43], target: 21, just two numbers left.
     |- Try 43 + 42 = 85. Evaluate 85 != 21, drop this branch.
     |- Try 43 - 42 = 1. Evaluate 1 != 21, drop this branch.
     |- Try 43 * 42 = 1806. Evaluate 1806 != 21, drop this branch.
     |- Try 43 / 42 = 1.0. 1.0 is a decimal, drop this branch.
    |- Try 58 * 16 = 928. Add 928 to the number set. Current number set: [928, 43], target: 21, just two numbers left.
     |- Try 928 + 43 = 971. Evaluate 971 != 21, drop this branch.
     |- Try 928 - 43 = 885. Evaluate 885 != 21, drop this branch.
     |- Try 928 * 43 = 39904. 39904 exceeds the maximum intermediate result, drop this branch.
     |- Try 928 / 43 = 21.6. 21.6 is a decimal, drop this branch.
    |- Try 58 / 16 = 3.6. 3.6 is a decimal, drop this branch.
   |- Pick two numbers (43, 16) (numbers left: [58]). Try possible operations.
    |- Try 43 + 16 = 59. Add 59 to the number set. Current number set: [59, 58], target: 21, just two numbers left.
     |- Try 59 + 58 = 117. Evaluate 117 != 21, drop this branch.
     |- Try 59 - 58 = 1. Evaluate 1 != 21, drop this branch.
     |- Try 59 * 58 = 3422. 3422 exceeds the maximum intermediate result, drop this branch.
     |- Try 59 / 58 = 1.0. 1.0 is a decimal, drop this branch.
    |- Try 43 - 16 = 27. Add 27 to the number set. Current number set: [27, 58], target: 21, just two numbers left.
     |- Try 58 + 27 = 85. Evaluate 85 != 21, drop this branch.
     |- Try 58 - 27 = 31. Evaluate 31 != 21, drop this branch.
     |- Try 58 * 27 = 1566. Evaluate 1566 != 21, drop this branch.
     |- Try 58 / 27 = 2.1. 2.1 is a decimal, drop this branch.
    |- Try 43 * 16 = 688. Add 688 to the number set. Current number set: [688, 58], target: 21, just two numbers left.
     |- Try 688 + 58 = 746. Evaluate 746 != 21, drop this branch.
     |- Try 688 - 58 = 630. Evaluate 630 != 21, drop this branch.
     |- Try 688 * 58 = 39904. 39904 exceeds the maximum intermediate result, drop this branch.
     |- Try 688 / 58 = 11.9. 11.9 is a decimal, drop this branch.
    |- Try 43 / 16 = 2.7. 2.7 is a decimal, drop this branch.
  |- Try 48 - 10 = 38. Add 38 to the number set. Current number set: [38, 43, 16], target: 21. Options for choosing two numbers: [(38, 43), (38, 16), (43, 16)].
   |- Pick two numbers (38, 43) (numbers left: [16]). Try possible operations.
    |- Try 43 + 38 = 81. Add 81 to the number set. Current number set: [81, 16], target: 21, just two numbers left.
     |- Try 81 + 16 = 97. Evaluate 97 != 21, drop this branch.
     |- Try 81 - 16 = 65. Evaluate 65 != 21, drop this branch.
     |- Try 81 * 16 = 1296. Evaluate 1296 != 21, drop this branch.
     |- Try 81 / 16 = 5.1. 5.1 is a decimal, drop this branch.
    |- Try 43 - 38 = 5. Add 5 to the number set. Current number set: [5, 16], target: 21, just two numbers left.
     |- Try 16 + 5 = 21. Evaluate 21 == 21, target found!

Now we have found the target, let's trace back the solution:
Final step: 16 + 5 = 21
The step before: 43 - 38 = 5
The first step: 48 - 10 = 38

Output the solution in the required format:
<Solution>
48 - 10 = 38
43 - 38 = 5
16 + 5 = 21
</Solution>

Solution:
48 - 10 = 38
43 - 38 = 5
16 + 5 = 21