<?php

const MOD = 1000000007;
fscanf(STDIN, "%d", $N);
bcscale(10);
$p_count = 0;
$n_count = 0;
$z_count = 0;
$ans = 1;
$ans_list = [];
for($i=1;$i<=$N;$i++){
    $ans *= 2;
    $ans %= MOD;
    $ans_list[$i] = $ans-1;
    fscanf(STDIN, "%d%d", $a, $b);
    $map[$i] = [$a, $b];
    $div = bcdiv($a, $b);
    if($div > 0){
        $p_list[$div][] = $i;
        $p_count++;
    }elseif($div < 0){
        $n_list[bcdiv(-$b, $a)][] = $i;
        $n_count++;
    }else{
        $z_list[] = $i;
        $z_count++;
    }
}
$dequeue = [];
$ans--;
    foreach($p_list as $key => $value){
        if(isset($n_list[$key])){
            $p = count($p_list[$key]);
            $n = count($n_list[$key]);
            $count = $p + $n;
            $zan = $N - $count;
            $pn = $ans_list[$p];
            $nn = $ans_list[$n];
            $zann = $ans_list[$zan]+1;
            $diff = (($pn * $nn) % MOD) * $zann % MOD;
            $ans -= $diff;
            $new_dequeue = [];
            if(isset($queue)){
                foreach($queue as $qvalue){
                    $d_count = ($N- $count - $qvalue[0]);
                    $d_mul = $qvalue[1] * $pn * $nn % MOD ;
                    $plus = $d_mul * ($ans_list[$d_count]+1)%MOD;
                    $ans += $plus;
                    $new_dequeue[] = [$d_count, $d_mul];
                }
            }
//            if(isset($dqueue)){
//                foreach($dqueue as $qvalue){
//                    $d_count = ($N- $count - $qvalue[0]);
//                    $d_mul = $qvalue[1] * $pn * $nn % MOD ;
//                    $plus = $d_mul *  ($ans_list[$d_count]+1)%MOD;
//                    $ans -= $plus;
//                    $queue[] = [$d_count, $d_mul];
//                }
//            }
//            $dequeue = array_merge($dequeue, $new_dequeue);
            $queue[] = [$count, $pn * $nn % MOD];
        }
    }


if($z_count>1){
    $count = $z_count;
    $zan = $N - $count;
    $pn = $ans_list[$count];;
    $zann = $ans_list[$zan];
    $diff = $pn * $zann % MOD;
    $ans -= $diff;
    if(isset($queue)){
        foreach($queue as $qvalue){
            $d_count = ($N- $count - $qvalue[0]);
            $d_mul = $qvalue[1] * $pn % MOD ;
            $plus = $d_mul *  ($ans_list[$d_count]+1);
            $ans += $plus;
            $dqueue[] = [$d_count, $d_mul];
        }
    }
//    if(isset($dqueue)){
//        foreach($dqueue as $qvalue){
//            $d_count = ($N- $count - $qvalue[0]);
//            $d_mul = $qvalue[1] * $pn % MOD ;
//            $plus = $d_mul *  ($ans_list[$d_count]+1);
//            $ans -= $plus;
//            $queue[] = [$d_count, $d_mul];
//        }
//    }
    $queue[] = [$count, $pn % MOD];
}

echo $ans;