using
System;
class
GFG{
static
bool
find(
double
[] v,
int
n,
double
dest, String s)
{
if
(n == 1)
{
if
(Math.Abs(v[0] - dest) <= 0.0000001)
{
Console.WriteLine(s + String.Join(
""
,
(
int
)dest) +
" "
);
return
true
;
}
return
false
;
}
for
(
int
i = 0; i < n; i++)
{
for
(
int
j = i + 1; j < n; j++)
{
double
a = v[i], b = v[j];
String p = s;
v[i] = a + b;
v[j] = v[n - 1];
s = (s + String.Join(
""
, (
int
)a) +
'+'
+ String.Join(
""
, (
int
)b) +
" => "
);
if
(find(v, n - 1, dest, s))
return
true
;
s = p;
v[i] = a - b;
v[j] = v[n - 1];
s = (s + String.Join(
""
, (
int
)a) +
'-'
+ String.Join(
""
, (
int
)b) +
" => "
);
if
(find(v, n - 1, dest, s))
return
true
;
s = p;
v[i] = b - a;
v[j] = v[n - 1];
s = (s + String.Join(
""
, (
int
)b) +
'-'
+ String.Join(
""
, (
int
)a) +
" => "
);
if
(find(v, n - 1, dest, s))
return
true
;
s = p;
v[i] = a * b;
v[j] = v[n - 1];
s = (s + String.Join(
""
, (
int
)a) +
'*'
+ String.Join(
""
, (
int
)b) +
" => "
);
if
(find(v, n - 1, dest, s))
return
true
;
s = p;
if
(b != 0)
{
v[i] = a / b;
v[j] = v[n - 1];
s = (s + String.Join(
""
, (
int
)a) +
'/'
+ String.Join(
""
, (
int
)b) +
" => "
);
if
(find(v, n - 1, dest, s))
return
true
;
}
s = p;
if
(a != 0)
{
v[i] = b / a;
v[j] = v[n - 1];
s = (s + String.Join(
""
, (
int
)b) +
'/'
+ String.Join(
""
, (
int
)a) +
" => "
);
if
(find(v, n - 1, dest, s))
return
true
;
}
s = p;
v[i] = a;
v[j] = b;
}
}
return
false
;
}
static
void
checkPossibleOperation(
double
[] arr,
double
K)
{
String s =
""
;
if
(!find(arr, arr.Length, K, s))
{
Console.WriteLine(
"-1"
);
}
}
public
static
void
Main(String[] args)
{
double
[] arr = {2, 0, 0, 2};
double
K = 4;
checkPossibleOperation(arr, K);
}
}