JOIN
Get Time
long_comps_topcoder  Problem Statement
Contest: Marathon Match 16
Problem: RobotRouting

Problem Statement

    Consider the problem faced by an online retail company with a large inventory: it must have huge warehouses to house its products, and must employ many people to retrieve the products for each sale. In the interest of efficiency, we would like to streamline this task by using a number of medium sized robots.



To model this, we will consider the warehouse as a grid. Each shelf in the warehouse will be located at one location on the grid, and each robot will take up one location on the grid. The robots may move in any of the four cardinal directions each timestep, but two robots may never be located at the same location, and cannot cross paths.



The locations of the shelves in the warehouse will be specified, along with the initial locations of the robots. You will also be told which shelves each product is on (a shelf may contain multiple products, and a product may appear on multiple shelves). Finally, you will be given a number of tasks, where each task consists of a product and a destination. For each task, you must send a robot to a location adjacent to a shelf containing the product, where the robot may pick up the product, and then you must send the robot to the product's destination, where it can be unloaded. Picking up and unloading a product each require one timestep. Each robot may carry at most C items at a time.



Each test case will be generated by forming a warehouse with N rows of shelves organized in M columns, where each row is K shelves wide and 2 shelves high. There will be either 1 or 2 empty spaces between rows and columns. There will be a border of 2 empty spaces around all the shelves. For example, if N = 3, M = 2, and K = 6, with 1 space between columns and 2 between rows, the warehouse would look like this (an 'S' represents a shelf):
 .................
 .................
 ..SSSSSS.SSSSSS..
 ..SSSSSS.SSSSSS..
 .................
 .................
 ..SSSSSS.SSSSSS..
 ..SSSSSS.SSSSSS..
 .................
 .................
 ..SSSSSS.SSSSSS..
 ..SSSSSS.SSSSSS..
 .................
 .................
The locations of the products will be given as (x,y) coordinates, where the upper left corner is (0,0). Each product will be located at between 1 and 5 different locations (chosen randomly for each product). The initial locations of the robots will also be given as (x,y) coordinates.



The tasks for the robots will be given as a product ID, and a destination, where the product is chosen randomly, and the destination is chosen randomly from the far left edge of the warehouse (that is where the products are loaded onto trucks). There will be 10,000 tasks.



You need to write a single method, route, which will take a description of the task, and return a trace of all the robot moves that results in products reaching their destinations. You will be given the parameters C, N, M, and K. You will also be given rowGap and colGap, each of which will be 1 or 2 and indicate whether there are one or two spaces between rows and columns. robotX and robotY will give you the initial x and y coordinates of the robots. A String[] products will give you the coordinates of all the products. Each element will be formatted as "X1,Y1 X2,Y2 ...", where the first element of products has PRODUCT_ID=0, and second has PRODUCT_ID=1, and so on. Finally, taskID and taskY will describe the tasks: you must move the product taskID[i] to the location 0,taskY[i]. You should return a String[] describing robot moves. Element i of your return should specify the action of each robot on time step i. These actions should be specified in the order corresponding to the order of the inputs robotX and robotY (i.e. the robot whose initial location is given by robotX[0] and robotY[0] should have its action first in each element of the return.



The possible actions are 'R', 'L', 'U', and 'D' for right (positive x), left, up (negative y) or down. Actions may also be "T<PRODUCT>" and "P<PRODUCT>" to load (take) a product on a robot or drop off (put) the product whose ID is <PRODUCT>. Finally, a robot may do nothing: 'S' for sleep. The commands may all be concatenated into one long string (with or without spaces -- it doesn't matter). For example, "RUST12P13" (or "R U S T12 P13") means that robot 0 moves right, robot 1 moves up, robot 2 does nothing, robot 3 picks up product 12 and robot 4 drops off product 13.



Your object is to finish all the tasks as quickly as possible, without making any mistakes. If you ever direct two robots into each other or off the board, drop a product off at the wrong location, or try to load a product onto a robot that is already carrying C things or isn't adjacent to a shelf containing that product you will receive a 0 for the test case. You will also receive a 0 if your return does not have one action per robot for each time step, or if your return has more than 50,000 time steps. Otherwise, your score for one test case will be the number of timesteps it takes you to deliver all products. If you fail to deliver all products, you score will be 1E9/delivered, where delivered is the number of products delivered. Your final score will be found by taking the sum over test cases of (lowest score)/(your score).



You may download a visualization tool to help you debug and improve your algorithm.
 

Definition

    
Class:RobotRouting
Method:route
Parameters:int, int, int, int, int, int, int[], int[], String[], int[], int[]
Returns:String[]
Method signature:String[] route(int C, int M, int N, int K, int rowGap, int colGap, int[] robotX, int[] robotY, String[] products, int[] taskID, int[] taskY)
(be sure your method is public)
    
 

Notes

-Assume that each shelf containing a product has an unlimited supply of that product.
-Every placement or parameter choice in the problem is made uniformly at random, with the one constraint that no two robots will be placed at the same location.
-The memory limit is 1024MB and the time limit is 60 seconds per test case.
-It is OK for one robot to move into the location that another robot occupied during the previous timestep, so long as that robot moves out of the way. Thus, two robots that are next to each other might both move in the same direction (but of course they could not move in opposite directions).
-There are 35 non-example tests.
 

Constraints

-C will be between 1 and 10.
-N will be between 5 and 30.
-M will be between 1 and 20.
-K will be between 5 and 15.
-rowGap and colGap will each be 1 or 2.
-products will contain between 100 and 10000 elements.
-There will be 10,000 tasks.
-There will be between 10 and M*N*K*rowGap/2 robots.
 

Examples

0)
    
C = 6
N = 12
M = 9
K = 13
rowGap = 1
colGap = 1
There are 8770 products
There are 200 robots
...................................RR..R....R..................R..R..RR.......R......R.R....R....R............R........R.........
.....................RR...R...R..RR..R......R.......R.....R...R.................R..................................R.............
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
............................R............R...............R.......................R.R.......R......R..R....R..........R...R.......
.RXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
R.................R.................R.................................R..................RR......R.......R............R..........
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.R
..R...........RR..................R................R..........R...R.........R.......R........R............RR...R..R...R...RR.....
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXXRXXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX..
...R..........R..R..R.............................R...R...................RR......RR.....R......................R..R.......R.....
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.R
R.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
.....................R.R........R...R.......R....R.......R.........R.................R......R............R.......................
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXXRXXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
........R................R...R..R.......R..R...........R.........RR....................RR.R.......................R....R.........
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXR.
........R...RR...........R..R...............R..........R........R............R............R.........R....R.......................
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
....R.R........R.R..................................................R.......R...R.........R..................RR.........R........
..XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..R.................RR................R.........R.....................RR......................................R.......R..........
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
......R...R..............R.....R.......................................R....................R............R.....R....R..........R.
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
RR...............................................................R...........................................R.R.................
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX..
..XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXXRXXXXXXXXXXXXX.XXXXXXXXXXXXX..
..RR............R......R..R...........R..............R.....R......R.........R.............R...R........R.R....R..............R...
...................R...................R.........R...............R...R...........R...........................................R...
1)
    
C = 9
N = 5
M = 13
K = 13
rowGap = 1
colGap = 2
There are 4074 products
There are 167 robots
....R..........R......................R..................R.....................R.....R....R......R.........R..............R...........................R.R.....R..R.....R.R..............R............
......R..............................R...........R..................R.......R..................R...........R.R..........R.R.......RR..................................R..R.................R.........
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXXR.XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXXRR
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXXR.XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..
.....R....................RR......................R..........R..R............R..........RR.R...R...................R..........R..R...............R...............R......R........R.........R....R....
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXXR.XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..
.R........R...R..R.......RR...................R.......R..R....R............R....................................R.RR.......R..R..............R........................................R..............
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXXR.XXXXXXXXXXXXX..XXXXXXXXXXXXX..
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXXR.XXXXXXXXXXXXX.RXXXXXXXXXXXXX.RXXXXXXXXXXXXX..
.....R.............R..R....................R...............R..................R....RR.........................R....R.R..R..........................R..R....R.....................R.............R....R
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX.RXXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX.R
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXXR.XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX.RXXXXXXXXXXXXX..
....R..............R................................R......................R.....R.R.........RR...........................R.R........R...........R......R...R....R..R.R.....R.....R........R.R...R..R
..XXXXXXXXXXXXX..XXXXXXXXXXXXXRRXXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX.RXXXXXXXXXXXXX..XXXXXXXXXXXXX.RXXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..
..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX.RXXXXXXXXXXXXX..XXXXXXXXXXXXXR.XXXXXXXXXXXXXR.XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..XXXXXXXXXXXXX..
.................R...........................R...................R.R..R..R..R...................RR........R.....................R...R........R..R...R.......R.R..........R.............R...........R.
.....R...R........R..........R...........RR........R.R.................R.........R.....R................R.........................R...................................R.R.....................R......
2)
    
C = 5
N = 17
M = 1
K = 7
rowGap = 1
colGap = 2
There are 8940 products
There are 24 robots
...........
...........
..XXXXXXX..
..XXXXXXX..
...........
..XXXXXXX..
..XXXXXXX.R
...........
..XXXXXXX..
..XXXXXXX..
...........
..XXXXXXX..
..XXXXXXX..
.......R...
..XXXXXXX..
..XXXXXXX..
..........R
..XXXXXXX..
R.XXXXXXX..
.R.........
..XXXXXXX..
..XXXXXXX..
.R.......R.
..XXXXXXX..
..XXXXXXX..
R..........
..XXXXXXX..
..XXXXXXX..
...........
..XXXXXXX..
..XXXXXXX..
...........
..XXXXXXX.R
R.XXXXXXX..
...........
..XXXXXXXR.
..XXXXXXX..
........RR.
..XXXXXXX..
.RXXXXXXX..
...........
.RXXXXXXX..
..XXXXXXX..
....R......
RRXXXXXXXR.
..XXXXXXX..
.......R...
..XXXXXXX..
..XXXXXXX..
.....R.....
..XXXXXXX.R
.RXXXXXXX.R
...........
...........
3)
    
C = 3
N = 18
M = 13
K = 12
rowGap = 2
colGap = 1
There are 9819 products
There are 1694 robots
R........R.R......R...R...R.R.R...........R.R.R.R......RRR.R....R...R......R.........R......RR......R........RRR.R.R..R..R...R.....R.............R.R....RRR......R....R..R..
...R..R......R...RR...R..R...R.R........R..RR...R......R.R...........R.R..........R.RRR.............RR.RR...R...R....RR...R....R.R.....R....R.R..R.RR.RR....R.R.R...R..R.R.R
.RXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXR.
.RXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXR.
.RRR.............R.RR.RR....R..R...R...RRRR.R..R....R...RRR..R...R...R.......R......R.....RR.............RR.R.R.R..R...R......R....RR..R..R.....R....R..R.RR..RRR...R..R..R.
.......R....RR...R.......R........R......R.....R.R.R...R...R.RR...R..R....R..RR.......................RRR.R....R..RRR.RR.......R....R...R.R..........R.RRR.............R...R
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
.RXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.R
...R.....R..R.RR..R...RR.......R...R.R.R.R.R..R..........RR...RR.R...R....RR..RR.....RR.........R...........R.....R...........R......R.......R....R...R.........R......R.R..
...........R.R...R.R.R........R...R...........R...RR...R..R.R......R..R..R..R..RR...R.........R....R.....R................R.R..........R.RRR....R.R....R...R..R...........R.
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRR
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
...R.........R.........................R..R......RR..R.........R..R.............R.....R..R.R.R............R...R............R.RR..R...R..RR........................R.......R.
RR.R...R.R...RR....RR.R.R.....R......RR...........R....R..............R............R............R......R.R..........R...R..RR.R.........R.RR.....R.....R.....RR.............
R.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRR
RRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRR
R...R.R.....R............R.RRR.R...R..............RR......R..............R..R.........R..RR........R..............R........R...R......R..RRR.R..R.R.......R..R.RR...RRRR.R..
R....R...........RRR....R..RRR.R.R...R.R..R........RR..R.R...R..R....RR...R.R.......RR.........RRR.R..R.......RR.........R........R....R..R..R......R...R...RRR....R...R..R.
..XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
.R................R.....R.........RRRR.R.RR.....R...RR...R..R......R....R.R.R........R......RR.....R......R....R.............R....R........R......R.RRR...R..R...........R.R
.RR.....R.R..RR.R....RRR...R..R.R.R......R.R.....R..R.R..R........RR...R....R....RR......RRR.R......R...R.......RR...R..R.....R..R..................R....R.R...R..R..RRR...R
R.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX..
......RR.R.RR...R...R.......R.......R.R.R......R.....R......R...R...R...R...R....R...R...RR.........R....R......R.RRR...RR....R..RR.R....R.R......R..R.R...........RR.....RR
R...R...R.....R...........R..R.RR..........R.....R....RR..R.....R..R....R.RR..RRR.......R...R......R...R.........R.......RR.........R..R..R.............RR....R.R...........
..XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXXR.
..XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX..
R.R..R...RRR........R..RR...RR.R..R.........R.........R.R..R....R.....R..RR...R.......R.R........R....R.....RR.R.R.....R..RR.R...R.RR....R..........R.RR..R..............RR.
....R........R.R.R.........RR..R.........RR...R...R.RR..R.R.R..R....R..R.R.R..R.....R..R...R.....R....R.....RR........RR.....R...R..R...R.......R..R...R..........R..R......
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX..
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..R....R..RR..............R.R..R...R.....RR.R.R.......R..R......R.......R.....R.RR..R..............RR..RRR.RR...R.R.....R..R.R........RR..........R...RR..R..R..RR...R......
...RR......RR......R....R.........RR...RRR...R....RR.R....R......................R.R......R....R.R..R.RR....R......R.R.R...R......R....R....R...R..R...RR..R...RRR..........
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX..
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
............R.....R..RR............................RR.....R.........RR............RRR..R..R.R...R.....R.R....R.R...R...R.....R......R..R......RR..R.....RR..R.RR.......R....
R.R..R.....R....RR............R..R......RR...RR...R...R..RRR..........R..........R......R...R.R......R.............RRR.............RR....R.....R..R.RR.R.R..........R..R.RRR
.RXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.R
R.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXR.
......R.R.......R..R..R.R.........R.........RR..R.......R.R....R..........R.R......R..R...RR...R.......R.R...R.RR.....R.R...........RRR.R.R..R.R..RR..RRR.R......R..R.R..R..
RR.R....RR.R...R...R.RR..R..R..R.RR....R..R.R....R.R.R.....RR..R.R.R..R....R.....R.R.....................R.R............R.R..RR..R..R......R......R...R.......RR.........R.R
R.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXR.
..XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRR
R....RR.....R..R...........R..........R............RR.R....R..R....RR...........RR.RR...RR.R.....R.R.....R.R................R......R...RR............R...........R.RRR...R..
....RRR....R......R.R....RR..R...R.............R.R...................R........R...RR.R..R............R.R..R.RRRR..R.R..R..R...R.RR.R.R..R.R..R.........R.RRR..R.............
..XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.R
R.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..R.R...R.R.R.R.R..RRR.......R............R........R...R.R.R..........R.R.R.........R.R...R.R.R.R.R......RR...R...R..RR..R..R..R.R....R................R......R.R.R...RR..R.
R...R.........R..RR.R..R.......R....RR....R..R..RR..R.RRR.RR....RR.R..R........R.R.R...................R.R............R.......R...R..RR.RR.R...RRRR...........R...R........R
..XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXR.
RRR.....R.R.R.R....R.........RR.........R....R...R..R..R..R.....R.R.....R.......R...R.....RR.R..R..R.R...R..R..R..R.R..R..R........R.R...R.......R........R.R...R.R.RR..R...
......R.R...R.R..RR..R.RRR.R.R..R....R...R.....RR.....R....RR....R..R.R......RRR.R..RRR....R.R.RR..R...R...R.R........R....R.R.R...........RR.......RR..R...R......RR.....R.
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX..
..XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..R.R.R.............R.R.......R..R.....R.RR.....R......R...........R.R..R....R.R.R...R.RR..........RR........RRRRRR............R.R.........R....R...........R.R.........R..R
R.........R...RR..........R...R...R....R.R..R....R.........R...........RRR..R.....RR......RR.........R.R..R....RRR.....RR.....RR....R...RR..R..R..RR..R...RR.........R.R....
R.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
.RXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.R
..............R..RR........R.R.......R....R.R.............R.....R..........R...R..RRRRRR..R....R.......RR..........R..R..R..R.RRRR...........RR...R....R.RR.........R.....R.
.R........RR...R....R..RR..RR...R..R.............R.RRRR.RR.....RR.R...R..R....R....R..R.....RR.......R..RR..R.RR.............R.R.........R.....R....R..............R.....R.R
..XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRR
....R......R....R.......RR........RR.R..R.RR..R.R.R....R.........RR.R...R......R...R......R.............R.R....R.............RR...R.....RR......R..RRR..R...........RRR...RR
R..R.R....R.R....R.RRR......R....R......R......R..R...R..RR.R.R...RRR....RR.....R.........RR........RR.R.R........R........R..RRR........R...R......R.R.R....R........R.R...
..XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX..
..XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXR.
.R....RR.R.R.....R..........R.R....RR.......R.........RRR............R.......R.....R..RR.....R....R.RR.R......R..R...R.R...R..R...R...RR...R..RR.R.R.....RR.....R..R...RR...
...R.R...R..R...R....R........R.....R........R.R.R....R................R.R.RR......R.................RR.R.....R.....R...R.R..........R.....R.....R.....R..RRRRR.R..R..R.....
R.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.R
..XXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXRXXXXXXXXXXXX.XXXXXXXXXXXX.XXXXXXXXXXXXRXXXXXXXXXXXXR.
.....RR..........R.....RRR..R........R..RR..R...R.........R......R...RRRR.R..R......R..RR......R.....R...RRR.......R.R.......R.....RR..R..R..RRR..........R..RRR...R.R....R.
....RR.......RR...RRR....R............R..R.RR........RRR...RR......R...R.RRR.R..R.R.....R..R..R.R.R.RR...R.......R.R.........RR.RR....R..R.R...R..R...............R..R..R...
4)
    
C = 8
N = 5
M = 13
K = 15
rowGap = 1
colGap = 2
There are 4784 products
There are 131 robots
..............R..................R.....................R...RR......R....R...R.....................R..............................R...............R.........R...........R..R.............R..........R...........................
..R...R....................R..............................................................................R.R........R................R............................R..................RR.....R.....R....................RR.....
..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXXR.XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..
............R..........R....................R...............R....R..............R.....R........................R.......................R....R...............R......R...................R......R...........R....R...R.R...R...RR
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXXR.
...........R................R...R......................R...............R........R.............R...........R.................R...............R.........................R....R........R..................R....R..................
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXXR.XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..
.........R..R..............................R....R......R......R...........R..............R.............................................R.........................R.....R................R.................................R....
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..
R.XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXXR.XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..
...................................R.................R..R................R.....................R............................................................R....RR........................RRR...........................R...R.
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX..
..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX..XXXXXXXXXXXXXXX.RXXXXXXXXXXXXXXX..
....................R.............R...............................R.....R.....................R..R................R...R..............R....................R...........R.............................R...........R..............
.R..............R..R....R..................................................R...R.....R.....................R...R........................R..........................................................R.........................R.

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2010, TopCoder, Inc. All rights reserved.