#include<bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define all(x) x.begin(), x.end()
#define int long long
#define pq priority_queue
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define pp pop_back
#define F first
#define S second
using namespace std;
int n, m;
pair<int, int> adj[200010][4];
pair<int, int> a[200010];
vector<int> ans;
int vis[200010];
int s[20010];
bool cmp(int x, int y) {return a[x] < a[y];}
int calc(int x, int d)
{
	if (vis[x]) return x;
	vis[x] = 1;
	for (int i = 0; i < 4; i++)
	{
		int tod = (d - i + 1 + 4) % 4;
		int to = adj[x][tod].F;
		if (to == -1) continue;
		
		int ed = adj[x][tod].S;
		adj[x][tod] = {-1, -1};
		adj[to][(tod+2)%4] = {-1, -1};
		int y = calc(to, tod);
		
		if (y == -1) {ans.pb(ed); continue;}
		if (y != x) {vis[x] = 0; return y;}
	}
	vis[x] = 0;
	return -1;
}
void solve ()
{
	cin >> n;
	for(int i = 0; i < n; i++)
	{
		s[i] = i;
		cin >> a[i].F >> a[i].S;
		for (int j = 0; j < 4; j++) adj[i][j] = {-1, -1};
	}
	sort(s, s + n, cmp);
	cin >> m;
	for (int i = 1; i <= m; i++)
	{
		int x, y; cin >> x >> y; x--; y--;
		if (a[x].F == a[y].F)
		{
			if (a[x].S > a[y].S) swap(x, y);
			adj[x][0] = {y, i};
			adj[y][2] = {x, i};
		}
		else
		{
			if (a[x].F > a[y].F) swap(x, y);
			adj[x][1] = {y, i};
			adj[y][3] = {x, i};
		}
	}
	for (int i = 0; i < n; i++) calc(s[i], 0);
	
	cout << ans.size() << '\n';
	for (int i: ans) cout << i << '\n';
}
signed main() {IOS solve(); return 0;}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |