import
java.util.*;
class
GFG
{
static
void
solve(
int
[] a,
int
[] b,
int
n)
{
HashMap<Integer, Integer> mpp
=
new
HashMap<Integer, Integer>();
HashSet<Integer> st =
new
HashSet<Integer>();
for
(
int
i =
0
; i < n; i++) {
if
(!mpp.containsKey(b[i]))
mpp.put(b[i],
0
);
mpp.put(b[i],
1
+ mpp.get(b[i]));
st.add(b[i]);
}
ArrayList<Integer> sequence =
new
ArrayList<Integer>();
for
(
int
y =
0
; y < n; y++) {
int
it = st.size();
ArrayList<Integer> st1 =
new
ArrayList<Integer>();
for
(
int
elem : st) st1.add(elem);
Collections.sort(st1);
Collections.reverse(st1);
if
(a[y] ==
0
) {
it = st.size();
for
(var i =
0
; i < st1.size(); i++) {
if
(st1.get(i) >=
0
)
it = i;
}
int
el = st1.get(it);
sequence.add(el % n);
if
(!mpp.containsKey(el))
mpp.put(el,
0
);
mpp.put(el, mpp.get(el) -
1
);
if
(mpp.get(el) ==
0
)
st.remove(el);
}
else
{
int
x = n - a[y];
it = st.size();
for
(
int
i =
0
; i < st1.size(); i++) {
if
(st1.get(i) >= x)
it = i;
}
if
(it == st.size()) {
for
(
int
i =
0
; i < st1.size(); i++) {
if
(st1.get(i) >=
0
)
it = i;
}
}
int
el = st1.get(it);
sequence.add((a[y] + el) % n);
if
(!mpp.containsKey(el))
mpp.put(el,
0
);
mpp.put(el, mpp.get(el) -
1
);
if
(mpp.get(el) ==
0
)
st.remove(el);
}
}
for
(
int
elem : sequence)
System.out.print(elem +
" "
);
}
public
static
void
main(String[] args)
{
int
[] a = {
0
,
1
,
2
,
1
};
int
[] b = {
3
,
2
,
1
,
1
};
int
n = a.length;
solve(a, b, n);
}
}