import
java.util.*;
class
GFG{
static
Vector<Integer> generateSequence(
int
[]freq,
int
n)
{
HashMap<Integer,
Integer> m =
new
HashMap<Integer,
Integer>();
int
total =
0
;
for
(
int
i =
0
; i < n; i++)
{
m.put(i, freq[i]);
total += freq[i];
}
for
(
int
i =
0
; i < n; i++)
{
if
(m.containsKey(i))
{
Vector<Integer> sequence =
new
Vector<Integer>();
@SuppressWarnings
(
"unchecked"
)
HashMap<Integer,
Integer> mcopy = (HashMap<Integer,
Integer>) m.clone();
if
(mcopy.containsKey(i) && mcopy.get(i) >
0
)
mcopy.put(i, mcopy.get(i) -
1
);
sequence.add(i);
int
last = i;
for
(
int
i1 =
0
; i1 < total -
1
; i1++)
{
if
(mcopy.containsKey(last -
1
) &&
mcopy.get(last -
1
) >
0
)
{
mcopy.put(last -
1
,
mcopy.get(last -
1
) -
1
);
sequence.add(last -
1
);
last--;
}
else
if
(mcopy.containsKey(last +
1
))
{
mcopy.put(last +
1
,
mcopy.get(last +
1
) -
1
);
sequence.add(last +
1
);
last++;
}
else
break
;
}
if
(sequence.size() == total)
{
return
sequence;
}
}
}
Vector<Integer> empty =
new
Vector<Integer>();
return
empty;
}
static
void
PrintSequence(
int
freq[],
int
n)
{
Vector<Integer> sequence = generateSequence(freq, n);
if
(sequence.size() ==
0
)
{
System.out.print(
"-1"
);
}
else
{
for
(
int
i =
0
; i < sequence.size(); i++)
{
System.out.print(sequence.get(i) +
" "
);
}
}
}
public
static
void
main(String[] args)
{
int
freq[] = {
2
,
2
,
2
,
3
,
1
};
int
N =
5
;
PrintSequence(freq, N);
}
}