// Original C++ solution (slower):
#include <bits/stdc++.h>

using namespace std;

#define rep(i,a,n) for (int i=a;i<n;i++)

#define per(i,a,n) for (int i=n-1;i>=a;i--)

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(),(x).end()

#define fi first

#define se second

#define SZ(x) ((int)(x).size())

typedef vector<int> VI;

typedef long long ll;

typedef pair<int,int> PII;

typedef double db;

//mt19937 mrand(random_device{}());

const ll mod=998244353;

//int rnd(int x) { return mrand() % x;}

ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}

ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}

// head



const int N=2e5+5;

int nd[N],n,coor_x[N],coor_y[N];

ll ans;



struct point {

	int x,y,II,III,I,IV;

}p[N];

struct cmp1 {

	bool operator()(const point &a,const point &b) const {

		if (a.x==b.x) return a.y<b.y;

		return a.x<b.x;

	}

};

struct cmp2 {

	bool operator()(const point &a,const point &b) const {

		if (a.y==b.y) return a.x<b.x;

		return a.y<b.y;

	}

};



void modify(int p,int val) {

	for (int i=p;i<=n;i+=i&(-i)) nd[i]+=val;

}



int query(int p) {

	int res=0;

	for (int i=p;i;i-=i&(-i)) res+=nd[i];

	return res;

}



int main() {

	scanf("%d",&n);

	rep(i,0,n) {

		scanf("%d%d",&p[i].x,&p[i].y);

		coor_y[i]=p[i].y;

		coor_x[i]=p[i].x;

	}

	sort(coor_y,coor_y+n); sort(coor_x,coor_x+n); sort(p,p+n,cmp1());

	rep(i,0,n) {

		int pos=lower_bound(coor_y,coor_y+n,p[i].y)-coor_y+1;

		p[i].III=query(pos); p[i].II=i-p[i].III; modify(pos,1);

	}

	memset(nd,0,sizeof(nd)); sort(p,p+n,cmp2());

	rep(i,0,n) {

		int pos=lower_bound(coor_x,coor_x+n,p[i].x)-coor_x+1;

		p[i].III=query(pos); p[i].IV=i-p[i].III; modify(pos,1); p[i].I=n-1-p[i].II-p[i].III-p[i].IV;

	}

	rep(i,0,n) {

		ll a=powmod(2,p[i].I),b=powmod(2,p[i].II),c=powmod(2,p[i].III),d=powmod(2,p[i].IV),

		p1=(((a*c)%mod*(b-1))%mod*(d-1))%mod,p2=(((b*d)%mod*(a-1))%mod*(c-1))%mod,p3=((((a-1)*(b-1))%mod*(c-1))%mod*(d-1))%mod;

		ans=(ans+p1+p2-p3+mod)%mod;

	}

	ans=(ans+n*powmod(2,n-1))%mod;

	printf("%lld\n",ans);

}


// Optimized solution to the same problem (faster):
#include <bits/stdc++.h>

using namespace std;

#define rep(i,a,n) for (int i=a;i<n;i++)

#define per(i,a,n) for (int i=n-1;i>=a;i--)

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(),(x).end()

#define fi first

#define se second

#define SZ(x) ((int)(x).size())

typedef vector<int> VI;

typedef long long ll;

typedef pair<int,int> PII;

typedef double db;

//mt19937 mrand(random_device{}());

const ll mod=998244353;

//int rnd(int x) { return mrand() % x;}

ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}

ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}

// head



const int N=2e5+5;

int nd[N],n,coor_y[N];

ll ans;



struct point {

	int x,y,II,III,I,IV;

}p[N];

struct cmp1 {

	bool operator()(const point &a,const point &b) const {

		if (a.x==b.x) return a.y<b.y;

		return a.x<b.x;

	}

};

struct cmp2 {

	bool operator()(const point &a,const point &b) const {

		if (a.y==b.y) return a.x<b.x;

		return a.y<b.y;

	}

};



void modify(int p,int val) {

	for (int i=p;i<=n;i+=i&(-i)) nd[i]+=val;

}



int query(int p) {

	int res=0;

	for (int i=p;i;i-=i&(-i)) res+=nd[i];

	return res;

}



int main() {

	scanf("%d",&n);

	rep(i,0,n) {

		scanf("%d%d",&p[i].x,&p[i].y);

		coor_y[i]=p[i].y;

	}

	sort(coor_y,coor_y+n); sort(p,p+n,cmp1());

	rep(i,0,n) {

		int pos=lower_bound(coor_y,coor_y+n,p[i].y)-coor_y+1;

		p[i].III=query(pos); p[i].II=i-p[i].III; modify(pos,1);

	}

	sort(p,p+n,cmp2());

	rep(i,0,n) {

		p[i].IV=i-p[i].III; p[i].I=n-1-p[i].II-p[i].III-p[i].IV;

	}

	rep(i,0,n) {

		ll a=powmod(2,p[i].I),b=powmod(2,p[i].II),c=powmod(2,p[i].III),d=powmod(2,p[i].IV),

		p1=(((a*c)%mod*(b-1))%mod*(d-1))%mod,p2=(((b*d)%mod*(a-1))%mod*(c-1))%mod,p3=((((a-1)*(b-1))%mod*(c-1))%mod*(d-1))%mod;

		ans=(ans+p1+p2-p3+mod)%mod;

	}

	ans=(ans+n*powmod(2,n-1))%mod;  //  n

	printf("%lld\n",ans);			// SUM k (n k) = n 2^{n-1}

}									// k=0


// Fastest known solution for this problem: