#Lutece0503. CRNI

CRNI

Migrated from Lutece 503 CRNI

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

Even though he has found all the most amusing rides, Mirko’s enthusiasm still isn’t fading. He opened his graph paper notebook and started colouring squares, and a new, even harder problem dawned on him.

You are given a square table consisting of NN rows by NN columns. Each cell is either black or white.

A set of cells forming a rectangle, with horizontal and vertical edges following cell borders, shall be called a black rectangle if all cells inside the rectangle are black and it consists of at least two cells.

title

The left image shows two rectangles which are not black rectangles. The rectangle labelled 1 is not a black rectangle because it contains a white cell, and the rectangle labelled 2 is not a black rectangle because it consists of only one cell. On the other hand, the right image shows three valid black rectangles.

Calculate the number of possible selections of two black rectangles that have no common cells. As the required number can be extremely large, you should output the remainder of dividing that number by 10 007.

Input

The first line of input contains the integer NN (2N10002 \leq N \leq 1000).

Each of the next NN lines contains a single row of the table, consisting of NN symbols. The symbol C represents a black cell, while B represents a white cell.

Output

The first and only line of output must contain the remainder of dividing the required number by 1000710007.

Samples

2 
CC 
CC
2
3 
CCB 
CCB 
CBB
5
5 
BCCBB 
BBCBB 
BCCBB 
BBBBB 
CCBBB
8

Resources

COCI 2010/2011, 2nd round, November 13th 2010, Author: Stjepan Glavina