import java.util.*;
import java.io.*;

// Задача "Голова на плечах"
// 10-ая Интернет-олимпиада сезона 2006-2007, базовый уровень
// Автор задачи: Максим Буздалов, buzdalov@rain.ifmo.ru
// Автор решения: Денис Буздалов 

// Решение, не проходящее по времени

public class headand_db_tl {
    static Item[] nums;
    static long count;

    protected static class Item {
        public double xs, ys;
        public double xf;
    }

    public static void main(String[] args) throws IOException {
        Locale.setDefault(Locale.US);
        BufferedReader input;
        PrintWriter output;
        try {
            input = new BufferedReader(new FileReader("headand.in"));
            output = new PrintWriter("headand.out");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.exit(1);
            return;
        }

        input.readLine();
        int am = Integer.parseInt(input.readLine());
        nums = new Item[am];
        for (int i = 0; i < am; i++) {
            nums[i] = new Item();
            StringTokenizer st = new StringTokenizer(input.readLine());
            nums[i].xs = Double.parseDouble(st.nextToken());
            nums[i].ys = Double.parseDouble(st.nextToken());
            nums[i].xf = Double.parseDouble(st.nextToken());
        }
        preSort();
        merge(0, nums.length - 1);

        output.printf("%d\n", count / 2);

        input.close();
        output.close();
    }

    protected static void merge(int start, int finish) {
        if (start < finish) {
            int mid = (start + finish) / 2;
            merge(start, mid);
            merge(mid + 1, finish);

            Item[] t = new Item[nums.length];
            for (int i = start, i1 = start, i2 = mid + 1; i <= finish; i++) {
                if ((i1 <= mid) && ((i2 > finish) || (nums[i1].xf < nums[i2].xf))) {
                    t[i] = nums[i1];
                    count += Math.abs(i - i1);
                    i1++;
                } else {
                    t[i] = nums[i2];
                    count += Math.abs(i - i2);
                    i2++;
                }
            }
            System.arraycopy(t, start, nums, start, finish - start + 1);
        }
    }

    protected static void preSort() {
        Arrays.sort(nums, new Comparator<Item>() {
            public int compare(Item o1, Item o2) {
                double angle1 = Math.atan2(o1.ys, o1.xs);
                double angle2 = Math.atan2(o2.ys, o2.xs);

                if ((o1.ys >= 0) && (o1.xs <= 0)) {
                    angle1 -= 2 * Math.PI;
                }
                if ((o2.ys >= 0) && (o2.xs <= 0)) {
                    angle2 -= 2 * Math.PI;
                }

                if (angle1 < angle2) {
                    return -1;
                } else if (angle1 == angle2) {
                    return 0;
                } else {
                    return 1;
                }
            }
        });
    }
}
