using namespace std;
typedef pair<
int,
int> abcd;
typedef long long ll;
const
int P=
1e9+
7;
inline ll Pow(ll a,
int b){
ll ret=
1;
for (;b;b>>=
1,a=a
*a%P)
if (b&
1)
ret=ret
*a%P;
return ret;
}
inline ll Inv(ll a){
return Pow(a,P-
2);
}
const
int N=
100005;
int n;
int a[N],b[N],f[N];
int pos[N];
int c[N],maxn;
inline void add(
int x,
int r){
for (
int i=
x;i<=maxn;i+=i&-i)
(c[i]+=r)
%=P;
}
inline
int sum(
int x){
int ret=
0;
for (
int i=
x;i;i-=i&-i)
(ret+=c[i])
%=P;
return ret;
}
inline
int sum(
int l,
int r){
if (l>r)
return 0;
return (sum(r)+P-sum(l-
1))
%P;
}
int main(){
int x,
y;
freopen(
"t.in",
"r",stdin);
freopen(
"t.out",
"w",stdout);
ll fac=
1;
read(n);
for (
int i=
1;i<=n;i++)
read(
x),
read(
y),a[
x]=
y,fac=fac
*i%P,
pos[
y]=i;
maxn=n;
for (
int i=n;i;i--)
b[i]=sum(a[i],n),add(a[i],
1),b[i]=Inv(b[i]);
maxn=n+
1;
for (
int i=
1;i<=n;i++) c[i]=
0;
add(
0+
1,Inv(n));
for (
int i=
1;i<=n;i++){
ll ret=sum(
0+
1,a[i]-
1+
1);
if (!b[i])
f[
pos[a[i]]]=ret
*fac%P;
else
add(a[i]+
1,ret
*b[i]
%P);
}
for (
int i=
1;i<=n;i++)
printf(
"%d\n",f[i]);
return 0;
}