#include <iostream>
#include <vector>
#include <algorithm>
struct Triangle {
int var_a, var_b, var_c;
Triangle(){};
Triangle(int var_a, int var_b, int var_c):var_a(var_a), var_b(var_b), var_c(var_c){};
bool operator<(const Triangle &other) {
return var_a < other.var_a || var_b < other.var_b || var_c < other.var_c;
}
bool operator>(const Triangle &other) {
return var_a > other.var_a || var_b > other.var_b || var_c > other.var_c;
}
bool operator==(const Triangle &other) {
return var_a == other.var_a && var_b == other.var_b && var_c == other.var_c;
}
};
int gcd(int var_a, int var_b);
void search_big(int &var_a, int &var_b);
Triangle ascending_tr(int var_a, int var_b, int var_c);
void ascending(std::vector<Triangle> &arr, int left, int right);
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
int len;
std::cin >> len;
std::vector<Triangle> arr;
while (len--) {
int var_a, var_b, var_c;
std::cin >> var_a >> var_b >> var_c;
int var_g = gcd(var_a, gcd(var_b, var_c));
arr.emplace_back(ascending_tr(var_a / var_g, var_b / var_g, var_c / var_g));
}
len = arr.size();
ascending(arr, 0, len - 1);
int ans = 1;
for (int i = 1; i < len; ++i) {
if (!(arr[i] == arr[i - 1])) {
++ans;
}
}
std::cout << ans;
return 0;
}
int gcd(int var_a, int var_b) {
return var_b ? gcd(var_b, var_a % var_b) : var_a;
}
void search_big(int &var_a, int &var_b) {
if (var_a > var_b) {
std::swap(var_a, var_b);
}
}
Triangle ascending_tr(int var_a, int var_b, int var_c) {
search_big(var_a, var_b);
search_big(var_a, var_c);
search_big(var_b, var_c);
return { var_a, var_b, var_c };
}
void ascending(std::vector<Triangle> &arr, int left, int right) {
if (left >= right) {
return;
}
Triangle pivot = arr[(left + right) >> 1];
int var_i = left, var_j = right;
while (var_i <= var_j) {
while (arr[var_i] < pivot) {
++var_i;
}
while (arr[var_j] > pivot) {
--var_j;
}
if (var_i <= var_j) {
std::swap(arr[var_i], arr[var_j]);
++var_i, --var_j;
}
}
ascending(arr, left, var_j);
ascending(arr, var_i, right);
}
/*
3
6 6 10
15 25 15
35 21 21
4
3 4 5
10 11 12
6 7 8
6 8 10
*/
