FIBOSUM - Fibonacci Sum

no tags 

The Fibonacci sequence is defined by the following relation:

  • F(0) = 0
  • F(1) = 1
  • F(N) = F(N - 1) + F(N - 2), N >= 2

Your task is very simple. Given two non-negative integers N and M, you have to calculate the sum (F(N) + F(N + 1) + ... + F(M)) mod 1000000007.

Input

The first line contains an integer T (the number of test cases). Then, T lines follow. Each test case consists of a single line with two non-negative integers N and M.

Output

For each test case you have to output a single line containing the answer for the task.

Example

Input:
3
0 3
3 5
10 19

Output:
4
10
10857

Constraints

  • T <= 1000
  • 0 <= N <= M <= 109

hide comments
sng_shivang: 2019-06-07 18:59:27

Negative cases are possible so beware of that.

toolatetostart: 2019-05-28 15:14:26

can be done using partial sum
no matrux expo. needed

crackeree: 2019-05-02 11:24:23

This is too much cheap!! :/ "N<=M" has been said in constrain. But further they have set input against the constrain in order to make the problem a bit harder. Negative answers never be possible if N<=M. But using this "cout<<(fibonacci(b+2)-fibonacci(a+1)+mod)%mod<<endl; " instead of "cout<<fibonacci(b+2)-fibonacci(a+1)<<endl; " got AC.

marethyu1: 2018-12-10 20:50:22

I got segmentation fault, please help!

salman3007: 2018-10-18 16:20:26

use this to print answers:
cout<<(fibonacci(b+2)-fibonacci(a+1)+mod)%mod<<endl;
ensures positive results

masterchef2209: 2018-09-08 11:24:32

negative modulus case was very tricky

mr_robot_rb01: 2018-09-03 06:30:53

Matrix Exponention
Modular Arithematic

ameyanator: 2018-03-22 22:20:06

I've learnt matrix exponentiation because of this question

hrsh_sengar: 2018-03-14 19:57:24

My 101th :)

m2do: 2018-01-10 19:48:53

Matrix Exponentiation it is! :)


Added by:David Gómez
Date:2010-12-04
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:My Own