//201403-1
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;scanf("%d", &n);
int arr[n];
int flag[1010];memset(flag, 0, sizeof(flag));
int count = 0;
for (int i = 0; i < n; i++){scanf("%d", &arr[i]);
if (flag[abs(arr[i])] == 1)
count++;
flag[abs(arr[i])]++;}printf("%d", count);
return 0;}
//201403-1
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, num, res = 0;scanf("%d", &n);
unordered_set<int> s;
while (n--){scanf("%d", &num);
if (s.find(abs(num)) != s.end())
res++;
s.insert(abs(num));}printf("%d\n", res);
return 0;}
//201403-2
//在录入点集的时候,通过push_front将后面录入的点集放在前面,这样可以有效地避免当后续查询点集的时候
//这个点位于多个窗口内,但是打印最上面的窗口
#include <bits/stdc++.h>
using namespace std;
struct Node{
int rowFirst, colFirst, rowSecond, colSecond;
int laywer;};
int main(){
int n, m;scanf("%d%d", &n, &m);
list<Node> obj;
for (int i = 1; i <= n; i++){
Node node;scanf("%d%d%d%d", &node.rowFirst, &node.colFirst, &node.rowSecond, &node.colSecond);
node.laywer = i;
obj.push_front(node);}while (m--){
int a, b;scanf("%d%d", &a, &b);
auto it = obj.begin();
for (; it != obj.end(); it++)
if (a >= it->rowFirst && a <= it->rowSecond && b >= it->colFirst && b <= it->colSecond)
break;
if (it == obj.end())printf("IGNORED\n");
else{printf("%d\n", it->laywer);
obj.erase(it);
obj.push_front(*it);}}
return 0;}
//201403-2
#include <bits/stdc++.h>
using namespace std;
struct Node{
int x1, y1, x2, y2;
int id;};
int main(){
int n, m;scanf("%d%d", &n, &m);
list<Node> l;
int cnt = 1;
while (n--){
Node cur;scanf("%d%d%d%d", &cur.x1, &cur.y1, &cur.x2, &cur.y2);
cur.id = cnt++;
l.emplace_front(cur);}while (m--){
int x, y;scanf("%d%d", &x, &y);
bool flag = false;
for (auto it = l.begin(); it != l.end(); it++)
if (x >= it->x1 && x <= it->x2 && y >= it->y1 && y <= it->y2){printf("%d\n", it->id);
flag = true;
l.insert(l.begin(), *it);
l.erase(it);
break;}
if (!flag)printf("IGNORED\n");}
return 0;}