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
Amitayush Thakur: 2013-08-19 13:06:10

good question to learn application of Divide and conquer :)

: 2013-07-11 21:50:19

learned something new :D

Vijay Jain: 2013-07-10 17:57:08

after that u may try solving this question:
http://www.spoj.com/problems/BUILDTOW/

Joey Tribbiani: 2013-07-09 09:26:47

How do you store the fibonacci number?
As in how to store F(1000000000).
Cant use long long int, overflows.

No_words: 2013-06-20 20:51:55

Nice Question. Learned a lot ! :)

Atul Kumar Verma: 2013-06-10 04:57:27

learned a new concept about Fibonacci numbers nice question.


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