#include <cstdio>
#include <algorithm>
#include <cstring>
#include <ctime>
#define Rep(i, n) for (int i = 1; i <= n; i ++)
#define Rep0(i, n) for (int i = 0; i <= n; i ++)
#define RepG(i, x) for (int i = head[x]; i; i = edge[i].next)
#define v edge[i].to
#define mp(a, b) make_pair(a, b)
using namespace std;
typedef long long LL;
const int N = 210;
const int mod = 998244353;
int x[N], y[N];
bool vis[N];
LL qpow(LL a, LL b)
{
LL ret = 1, base = a;
while (b) {
if (b & 1) ret = ret * base % mod;
base = base * base % mod, b >>= 1;
}
return ret;
}
int main()
{
int n;
scanf("%d", &n);
Rep(i, n)scanf("%d%d", &x[i], &y[i]);
LL ans = qpow(2, n);
Rep(i, n) Rep(j, n) if (i != j){
int cnt = 2;
Rep(k, n) if (k != i && k != j)
if ((y[j] - y[i]) * (x[k] - x[i]) == (y[k] - y[i]) * (x[j] - x[i])) cnt ++;
LL tmp = (qpow(2, cnt) - 1 - cnt + mod) % mod;
ans = (ans - tmp * qpow(cnt * (cnt - 1), mod - 2) % mod + mod) % mod;
//printf("%lld %d\n", tmp, cnt * (cnt - 1));
}
ans = (ans - n - 1 + mod) % mod;
printf("%lld\n", ans);
return 0;
}