#include <bits/stdc++.h>
#define mod 998244353
using namespace std;
typedef long long ll;
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
	return x*f;
}
inline int qpow(int bas,int pw)
{
	int ans=1; for(;pw;pw>>=1,bas=1ll*bas*bas%mod)
		if(pw&1) ans=1ll*ans*bas%mod; return ans;
}
int xx[300],yy[300],Ans;
map <int,int> M;
int main()
{
	int n=read(); for(int i=1;i<=n;i++)
		xx[i]=read(), yy[i]=read();
	Ans=qpow(2,n)-n-1;
	for(int i=1;i<=n;i++)
	{
		M.clear();
		for(int j=i+1;j<=n;j++)
		{
			int tx=(1ll*(yy[j]-yy[i])*qpow((xx[j]-xx[i]),mod-2)%mod+mod)%mod;
			if(xx[j]==xx[i]) tx=-1;
			M[tx]++;
		}
		for(map<int,int> :: iterator it=M.begin();it!=M.end();it++)
			(Ans-=qpow(2,it -> second)-1)%=mod;
	}
	cout << (Ans%mod+mod)%mod << endl;
	return 0 ;
}
### Prompt

Please formulate a CPP solution to the following problem:

You are given N points (x_i,y_i) located on a two-dimensional plane. Consider a subset S of the N points that forms a convex polygon. Here, we say a set of points S forms a convex polygon when there exists a convex polygon with a positive area that has the same set of vertices as S. All the interior angles of the polygon must be strictly less than 180°.

cddb0c267926c2add885ca153c47ad8a.png

For example, in the figure above, {A,C,E} and {B,D,E} form convex polygons; {A,C,D,E}, {A,B,C,E}, {A,B,C}, {D,E} and {} do not.

For a given set S, let n be the number of the points among the N points that are inside the convex hull of S (including the boundary and vertices). Then, we will define the score of S as 2^{n-|S|}.

Compute the scores of all possible sets S that form convex polygons, and find the sum of all those scores.

However, since the sum can be extremely large, print the sum modulo 998244353.

Constraints

* 1≤N≤200
* 0≤x_i,y_i<10^4 (1≤i≤N)
* If i≠j, x_i≠x_j or y_i≠y_j.
* x_i and y_i are integers.

Input

The input is given from Standard Input in the following format:


N
x_1 y_1
x_2 y_2
:
x_N y_N


Output

Print the sum of all the scores modulo 998244353.

Examples

Input

4
0 0
0 1
1 0
1 1


Output

5


Input

5
0 0
0 1
0 2
0 3
1 1


Output

11


Input

1
3141 2718


Output

0

### Response

```cpp
#include <bits/stdc++.h>
#define mod 998244353
using namespace std;
typedef long long ll;
inline int read()
{
	int x=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
	return x*f;
}
inline int qpow(int bas,int pw)
{
	int ans=1; for(;pw;pw>>=1,bas=1ll*bas*bas%mod)
		if(pw&1) ans=1ll*ans*bas%mod; return ans;
}
int xx[300],yy[300],Ans;
map <int,int> M;
int main()
{
	int n=read(); for(int i=1;i<=n;i++)
		xx[i]=read(), yy[i]=read();
	Ans=qpow(2,n)-n-1;
	for(int i=1;i<=n;i++)
	{
		M.clear();
		for(int j=i+1;j<=n;j++)
		{
			int tx=(1ll*(yy[j]-yy[i])*qpow((xx[j]-xx[i]),mod-2)%mod+mod)%mod;
			if(xx[j]==xx[i]) tx=-1;
			M[tx]++;
		}
		for(map<int,int> :: iterator it=M.begin();it!=M.end();it++)
			(Ans-=qpow(2,it -> second)-1)%=mod;
	}
	cout << (Ans%mod+mod)%mod << endl;
	return 0 ;
}
```