# My algorithm maker software



## Mohammadahmadi (Oct 8, 2013)

After months of trying, finally I could write a program that got all the algorithms may lead to a particular state.
For example, to solve this case algorithms are calculated as follows.






algorithms are here
these are about 10000 algorithms!!!

All the possible algorithms are these and there is no faster algorithm to solve this case. and i didn't wrote longer algorithms.
you can test these algorithms as follow
f01 = f r01 = r ....
f11 = f' r11 = r' ....
f21 = f2 r21 = r2 ....

this is a new way to catch algorithms for your new methods. say your new methods here and I'll calculate algorithms that you need after approval of the Members.


----------



## Kirjava (Oct 8, 2013)

Mohammadahmadi said:


> this is a new way to catch algorithms for your new methods



so it's not brute force or kociemba?

please could you explain it for us?


----------



## Stefan (Oct 8, 2013)

That .docx file looked like empty pages and then crashed my viewer. Can't you just produce a normal .txt file?


----------



## ben1996123 (Oct 8, 2013)

Mohammadahmadi said:


> say your new methods here and I'll calculate algorithms that you need after approval of the Members.



or you could just use cube explorer


----------



## Mohammadahmadi (Oct 8, 2013)

Stefan said:


> That .docx file looked like empty pages and then crashed my viewer. Can't you just produce a normal .txt file?



here you are
http://lernu.ir/images/sth/New Text Document.txt


----------



## ThomasJE (Oct 8, 2013)

Mohammadahmadi said:


> here you are
> http://lernu.ir/images/sth/New Text Document.txt



What do they mean?

Also, is it just 2x2, or can it go higher? We haven't got one like this for 4x4 and up; so this could be interesting if it does.


----------



## Mohammadahmadi (Oct 8, 2013)

my program is designed by python because I thought that's a fast language.
it's make all the possible algorithms to solve a special case. we have some database site just like Boca.bee.pl that every body can go there and add a new algorithm. These sites are no longer needed because we can find all the possible algorithms.
I can add a method in my program with some conditional statement. for example, PLL is an algorithm that Top face and first and second row does not change and ... then my program will provide all of PLL algorithms (in a special range)
the program is based on make all the algorithms and extract useful.
as you know we have 54 notations so we have 54^^10=... ten move algorithm and it is not possible to make all of them. All of my art is here! I got too complex ways to reduce computation time.
cube explorer just give you some good ways and there may be some better ways too. some times it's too hard to receive your algorithms one by one with cube explorer.
I'll show you my method in 2x2 first layer soon.

I'm sorry because i can't speed English very well!!!


----------



## Mohammadahmadi (Oct 8, 2013)

ThomasJE said:


> What do they mean?
> 
> Also, is it just 2x2, or can it go higher? We haven't got one like this for 4x4 and up; so this could be interesting if it does.



1 - they are all the possible algorithms to solve that special case
f01 = f r01 = r ....
f11 = f' r11 = r' ....
f21 = f2 r21 = r2 ....
2 - of course it can be use in bigger cubes too. The only problem is that for bigger cubes we have more processing time
processing time depends on your method too. for example I can't make PLLs as normal and i usually make them with Adding two F2L (it's hard so explain)
if you have a new method or you need some algorithms say me. I'll think about how can I make them!
3 - my program is for 3x3 and 2x2 now and i didn't wrote that for 4x4 or more but it does not take much time so write that for 4x4 because the program is wrote systematic.

if you can't understand my text say me  because i cant speak very well


----------



## ben1996123 (Oct 8, 2013)

Mohammadahmadi said:


> f01 = f r01 = r ....
> f11 = f' r11 = r' ....
> f21 = f2 r21 = r2 ....



why not put R R' or R2 instead so people actually understand it?


----------



## Mohammadahmadi (Oct 8, 2013)

ben1996123 said:


> why not put R R' or R2 instead so people actually understand it?



it is not too hard and i already do that for my currently algorithms. but that file is for when i explained my method in an Iranian forum. (Several weeks ago)

*it's time to see the power of my program 
After weeks of trying I made a method for 2x2 first layer.
you can see my method here
give your comments*

if you have any problem with it, please say me

what do you think?
is that a useful method?
number of cases is good?
the method is comprehensible? or you need a tutorial!


----------



## qqwref (Oct 8, 2013)

Mohammadahmadi said:


> my program is designed by python because I thought that's a fast language.


Python is generally fast to write programs in, but when it is actually executing, it is relatively slow. Of course for 2x2x2 solutions the speed is not important.



Mohammadahmadi said:


> it's make all the possible algorithms to solve a special case. we have some database site just like Boca.bee.pl that every body can go there and add a new algorithm. These sites are no longer needed because we can find all the possible algorithms.


We could already find all possible algorithms. Sites like that are useful because they show the best (fastest) algorithms for each case. Can your program also find the best algorithms, or does it only generate huge lists of possible ones?



Mohammadahmadi said:


> as you know we have 54 notations so we have 54^^10=... ten move algorithm and it is not possible to make all of them.


Uh what? Even on the 3x3x3 there aren't anywhere near 54 possible moves.



Mohammadahmadi said:


> what do you think?
> is that a useful method?
> number of cases is good?


As far as I can tell your method is something like: (a) set up the four pieces of the first layer into one of the positions you give, (b) solve the first layer using one algorithm, (c) CLL. I am not sure the first layer pieces will always fit into one of the MM/MN/NN configurations. Also, it doesn't make sense to learn 300 algorithms for the first layer when you could just solve it with intuition - or, if you really want to learn algs, just memorize 80 and then use EG, so you only have to make a face instead of a layer. Your PDFs give way too many algs - nobody needs 1000 different algs. People will want one or a few options, at most. It's nice that you finished your program but you have to make the output useful to people or nobody will want to use it.


----------



## Mohammadahmadi (Oct 9, 2013)

qqwref said:


> Of course for 2x2x2 solutions the speed is not important.


of course it's too important! for example 14 move algorithms take 14000 century time with my computer.



qqwref said:


> We could already find all possible algorithms.


could you please show me a soft ware or site that do that for me?



qqwref said:


> Uh what? Even on the 3x3x3 there aren't anywhere near 54 possible moves.


i said 54 Notation
R R' R2 r r' r2 M E S x y z ....
Imagine we want to make all the the 10 move algorithms. so we have 54^^10 difference algorithms. a simple math!!



qqwref said:


> I am not sure the first layer pieces will always fit into one of the MM/MN/NN configurations.


i can't speak English very well but I'll make a tutorial soon and I'll show you that first layer pieces will always fit into one of my algorithms (some time you should make them with one move)



qqwref said:


> it doesn't make sense to learn 300 algorithms for the first layer when you could just solve it with intuition


well! you don't need to memorize all of them. you should just learn them! all of them are 1-7 move (one of them is 1 and several 7) so it's not very hard! some people spend too much time in order to solve the first layer in the best way. so anyway it's faster than waste your time.



qqwref said:


> if you really want to learn algs, just memorize 80 and then use EG, so you only have to make a face instead of a layer.


1 - oh oh oh! we have 120 EG algorithms and they are always longer than my algorithms. if you want to lean 80 of my alg and use EG so you need to learn..
91 (4.5 move) + 80(8.46 move) + 40 (CLL) = 409 + 676 = 1085
but on my method
324 (4.5) + 40 (CLL) = 1458
(4.5 and 8.86 is average of moves)
so it isn't much easier 
2 - i think the EG method isn't a fast method. because you do first layer false and you should spend an additional time to fix it again!

I am very pleased to hear from you.
If you have any other idea please feel free to say me


----------



## Stefan (Oct 9, 2013)

Mohammadahmadi said:


> i think the EG method isn't a fast method. because you do first layer false and you should spend an additional time to fix it again!



Doing the first layer false instead of correct *saves* moves. Check my RoFL method thread/page for statistics.


----------



## qqwref (Oct 9, 2013)

Mohammadahmadi said:


> of course it's too important! for example 14 move algorithms take 14000 century time with my computer.


How could it possibly be that much ?_?



Mohammadahmadi said:


> could you please show me a soft ware or site that do that for me?


JACube, Cube Explorer, or the solvers here.




Mohammadahmadi said:


> i said 54 Notation
> R R' R2 r r' r2 M E S x y z ....
> Imagine we want to make all the the 10 move algorithms. so we have 54^^10 difference algorithms. a simple math!!


Many of those are equivalent, so there is no need to try them all. You are searching for move sequences, so why try the same thing twice? x y z are just rotations; r f u d l b are equivalent to L B D U R F plus a rotation. So really there are only 27 possible moves, and only 18 if you don't allow slice moves. And there are actually far fewer than 54^10 (NOT 54^^10) sequences to try anyway, since you know you will never use the same type of move twice in a row (for instance R l2 or F F').



Mohammadahmadi said:


> i can't speak English very well but I'll make a tutorial soon and I'll show you that first layer pieces will always fit into one of my algorithms (some time you should make them with one move)


OK, what case would you use for this? F R U F2 U F U2 R2 U' F2



Mohammadahmadi said:


> 1 - oh oh oh! we have 120 EG algorithms and they are always longer than my algorithms. if you want to lean 80 of my alg and use EG so you need to learn..
> 91 (4.5 move) + 80(8.46 move) + 40 (CLL) = 409 + 676 = 1085
> but on my method
> 324 (4.5) + 40 (CLL) = 1458
> ...


Your method only applies if you already know CLL, so we can ignore those algs. Thus there are only 80 new algs to learn if you want to do EG. That is 80*8.46=676 moves. (Why would someone learn 91 of your algs if they are learning EG?) But your method is 324*4.5=1458 moves. That looks like a big difference to me. Also, many EG algs are composed of simple sequences such as RUR' and FR'F'R, but your algs are more random, so each move is harder to remember. I would also add that your method has completely new recognition that must also be learned, whereas with EG the hardest part of the recognition is the same as CLL.



Mohammadahmadi said:


> 2 - i think the EG method isn't a fast method. because you do first layer false and you should spend an additional time to fix it again!


You should tell that to the current WR holder in 2x2x2.


----------



## Renslay (Oct 9, 2013)

qqwref said:


> JACube, Cube Explorer, or the solvers here.



I believed that Ron's Mini Cube Solver is an optimal solver, but this assuption seems false.

For this scramble:
R F2 R' F U2 F R U2 F' U2 z' (10,13)
if I say "max 11 moves", it gives
F U F2 U2 F U' F2 U R2 F' R2 (11,16)
and if I say "max 10 moves", then it gives the optimal solution (because for "max 9 moves" it gives nothing).

Does anyone know why it works in this way? Of course I can find optimal solutions, but why with multiple runs...

EDIT: okay, I think I know the answer. It searches for solutions lexicographically ordered, that's why it found the longer algorithm first.


----------



## Kirjava (Oct 9, 2013)

acube.js <3


----------



## Mohammadahmadi (Oct 9, 2013)

Mohammadahmadi said:


> *it's time to see the power of my program
> After weeks of trying I made a method for 2x2 first layer.
> you can see my method here
> give your comments*



well! here's some example solve.(green of front and yellow on top)

Scramble: D B' D' L2 U' R2 B' D2 L2 B'
Build a case: x' y2 (DBL is fix so we want to make the white face)(it's a MM case)
solution: r' u' r u f'

Scramble: F U2 R2 U2 R D' L' D' F L
Build a case: x R (DBL is fix so we want to make the white face)(it's a MM case)
solution: f' u' f2 u2 r2

Scramble: F' D2 L' B D2 R D2 R B2 R
Build a case: y x' U (DBL is fix so we want to make the yellow face)(it's a MM case)
solution: d f2 r f' d2 r

if you think some scrambles can't be solve say me.



qqwref said:


> Your method only applies if you already know CLL, so we can ignore those algs. Thus there are only 80 new algs to learn if you want to do EG. That is 80*8.46=676 moves. (Why would someone learn 91 of your algs if they are learning EG?) But your method is 324*4.5=1458 moves. That looks like a big difference to me. Also, many EG algs are composed of simple sequences such as RUR' and FR'F'R, but your algs are more random, so each move is harder to remember. I would also add that your method has completely new recognition that must also be learned, whereas with EG the hardest part of the recognition is the same as CLL.



in my method i make first layer and them we just need a CLL.
i can change my algorithms to make just one face (not one layer) so they will be 324/3=108 cases.
so in order to that we have two way to solve the cube

1 - make one face with one of 108 algs and then solve the cube with one EG so
108 (4.5) + 120 (8.46) = 486 + 1015 = 1501
 
2 - make one layer with one of 324 algs and then solve the cube with one CLL so
324 (4.5) + 40 (8.46) = 1458 + 338 = 1796

be careful because my method is on first layer so you should calculate some thing for first layer or face.



qqwref said:


> You should tell that to the current WR holder in 2x2x2.



of course EG is a really fast method!!! I just mean my method may be better because:
in EG we just make one face with irregular sides and then we use some longer algorithms to fix it again.
but in my method we don't need to make that irregular. so we don't use longer algorithms.

Meanwhile, as I told you, I can change my algs to use it for EG ( same 108 cases ) if you don't like to use my method with CLL, I can provide that in EG method for you.


----------



## Stefan (Oct 9, 2013)

Mohammadahmadi said:


> well! here's some example solve.(green of front and yellow on top)
> 
> Scramble: D B' D' L2 U' R2 B' D2 L2 B'
> Build a case: x' y2 (DBL is fix so we want to make the white face)(it's a MM case)
> ...



None of those examples work. I suggest to use http://alg.garron.us/ to check before you keep wasting everybody's time. Also, what's up with the lower case letters?


----------



## Renslay (Oct 9, 2013)

Stefan said:


> None of those examples work. I suggest to use http://alg.garron.us/ to check before you keep wasting everybody's time. Also, what's up with the lower case letters?



They work for me. He just solve the first layer, as he mentioned (white / yellow).
Second example
Although I don't understand much more... Why is the R in the the "Build a case" phase?



Mohammadahmadi said:


> of course EG is a really fast method!!! I just mean my method may be better because:
> *in EG we just make one face with irregular sides and then we use some longer algorithms to fix it again.
> but in my method we don't need to make that irregular. so we don't use longer algorithms.*
> 
> Meanwhile, as I told you, I can change my algs to use it for EG ( same 108 cases ) if you don't like to use my method with CLL, I can provide that in EG method for you.



That doesn't make any sense...


----------



## Mohammadahmadi (Oct 9, 2013)

Stefan said:


> None of those examples work. I suggest to use http://alg.garron.us/ to check before you keep wasting everybody's time. Also, what's up with the lower case letters?



ehhhh! I'm sorry if i wasted your time :/ but I checked all of them. all of them are true in order to this Notations


*### Notice that this these are just solution of first layer!! because my method was on first layer!*

for Example for the first one we do this
D B' D' L2 U' R2 B' D2 L2 B' x' y2 R' U' R U F' (The white was correct)
SECOND
F U2 R2 U2 R D' L' D' F L x R F' U' F2 U2 R2 (The White was correct)
THIRD
F' D2 L' B D2 R D2 R B2 R y x' U D F2 R F' D2 R (The yellow was correct)

please check it again!!



Renslay said:


> That doesn't make any sense...


how do you do the first face? anyway it's better than nothing!


----------



## Stefan (Oct 9, 2013)

Renslay said:


> They work for me. He just solve the first layer, as he mentioned (white / yellow)



Ah yes, thanks. I had missed that, sorry. This thread is a bit confusing. And given that I'm used to color-neutral first face, those solutions looked very long.



Mohammadahmadi said:


> of course EG is a really fast method!!! I just mean my method may be better because:
> in EG we just make one face with irregular sides and then we use some longer algorithms to fix it again.
> but in my method we don't need to make that irregular. so we don't use longer algorithms.



I have already told you that irregular means *shorter* algorithms, *not* longer. Counter-intuitive maybe, but still true (unless I messed up the computations). You have thus just given a reason why your method is *worse* than EG.


----------



## Mohammadahmadi (Oct 9, 2013)

Renslay said:


> Although I don't understand much more... Why is the R in the the "Build a case" phase?



before R that isn't one of my method cases. for example sometimes you do U to make an F2L and then you do the alg.



Stefan said:


> I have already told you that irregular means *shorter* algorithms, *not* longer. Counter-intuitive maybe, but still true.


eeeee. so i failed in my method!! but same 108 alg may be useful. I'll make that soon! i want to hear your ideas about it!

I'm working on an other method too. something just like F2L!!



Stefan said:


> Ah yes, thanks. I had missed that, sorry. This thread is a bit confusing.



NP! I know that my speech is confusing. because I'm Persian!


----------



## Renslay (Oct 9, 2013)

Mohammadahmadi said:


> how do you do the first face? anyway it's better than nothing!



Take the scramble:
F2 R2 F' R U' F'

Then with EG, I would do:
x y' U R U' R' for EG2 first layer (misaligned: opposite case),
then R2 F2 R2 for CLL. That's 7 moves (6 with the cancellation).

I doubt that there is any shorter solution with aligned first layer *unless* you solve the whole cube in one step, like the inverse scramble.


----------



## Stefan (Oct 9, 2013)

Using your three example scrambles:

Scramble: D B' D' L2 U' R2 B' D2 L2 B'
Orient: z y'
Solve blue face: R U' R2'

Scramble: F U2 R2 U2 R D' L' D' F L
Orient: z2 y'
Solve green face: R2' U' R

Scramble: F' D2 L' B D2 R D2 R B2 R
Orient: z' y2
Solve red face: R2' U' F

(I'm no good at 2x2, though, use poor man's Ortega)


----------



## qqwref (Oct 9, 2013)

Mohammadahmadi said:


> before R that isn't one of my method cases. for example sometimes you do U to make an F2L and then you do the alg.


I see. So not only you have to learn 300+ algs, but you may have to do setup moves at the start? It doesn't look like a very good strategy. Why did you choose these cases, anyway? Couldn't you choose more cases to eliminate setup moves? Or, couldn't you have less algs but still minimize the number of setup moves you need? Your method has so much to remember but not very much benefit.


----------



## Mohammadahmadi (Oct 10, 2013)

i designed one another method with my program again! HEHE! and i named it FF2L. it's mean First F2L
(First First 2 layer?! omg )

in F2L you solve FR and FRD without any effect on BR and BRD, but sometimes there is a faster way to solve FR but it can move BR too. so when BR isn't true, you can use FF2L to solve FR. so you can use it 1-3 times in each solve

you can see my method here
please give your comments and ideas about my method

qqwref! what do you think?


----------



## Mohammadahmadi (Oct 11, 2013)

Mohammadahmadi said:


> *it's time to see the power of my program
> After weeks of trying I made a method for 2x2 first layer.
> you can see my method here
> give your comments*



I changed my method and I fixed bugs

we have 90 cases for the first face (not first layer). we just do the first face and then we use EG method to solve the cube
Notice that sometimes you should make this cases with one move
the average of moves is 4.05 so we can solve the first layer in average with 4 moves

Please give your comments and ideas about my method

*you can see my method here*


----------



## mark49152 (Oct 11, 2013)

This is quite useful. I've been trying to capture a list of optimal solutions to first face for my own use.

Could you perhaps filter it so that only cases with two adjacent stickers are included? For example, always have DBL and DFL solved. Generally when choosing which face to solve, I'll go for one with two adjacent stickers already.

For some of the 5-long cases the alg list is a bit long. In such cases you could perhaps filter so that only options that turn two faces are included, or maybe three faces.

Oh - and this isn't really a method, it's an algorithm set.


----------



## Mohammadahmadi (Oct 11, 2013)

mark49152 said:


> This is quite useful. I've been trying to capture a list of optimal solutions to first face for my own use


if you do this, please send us what algorithms did you choose. as you know it's too hard to search and choose a good one. tnx 



mark49152 said:


> Could you perhaps filter it so that only cases with two adjacent stickers are included? For example, always have DBL and DFL solved. Generally when choosing which face to solve, I'll go for one with two adjacent stickers already.


these are all the possible cases for the first layer so i don't want to omit some of them because if you want to find a fast way to solve the first layer you should know bad cases too! so if you don't like to memorize long algorithm you can just start from the top. because they are arranged according to number of moves 



mark49152 said:


> Oh - and this isn't really a method, it's an algorithm set.


It really doesn't matter. because I cant speak English very well and i just say something to tell the story.

I'm too happy to hear from you
if you have any other ideas please feel free to ask me.


----------



## mark49152 (Oct 11, 2013)

Mohammadahmadi said:


> these are all the possible cases for the first layer so i don't want to omit some of them because if you want to find a fast way to solve the first layer you should know bad cases too! so if you don't like to memorize long algorithm you can just start from the top. because they are arranged according to number of moves


Most people are CN on 2x2, so the first step is to choose which case looks easiest from the six choices. It's relatively unusual to find only hard cases. My own approach of choosing a case with two stickers already adjacent doesn't always give the shortest solution; I'm sure some cases without that characteristic are more efficient. But it does mean I have a reliable and well-practiced solution to each case I recognize.


----------



## ben1996123 (Oct 11, 2013)

or you could just use intuition


----------



## mark49152 (Oct 11, 2013)

ben1996123 said:


> or you could just use intuition


Obviously, for many cases intuition would give the shortest solution, but not always. As with F2L, there are always neat tricks to solve some cases quicker, and that's why I'm interested in a list of optimal solutions.


----------



## Mohammadahmadi (Oct 11, 2013)

mark49152 said:


> Most people are CN on 2x2, so the first step is to choose which case looks easiest from the six choices. It's relatively unusual to find only hard cases. My own approach of choosing a case with two stickers already adjacent doesn't always give the shortest solution; I'm sure some cases without that characteristic are more efficient. But it does mean I have a reliable and well-practiced solution to each case I recognize.



1 - why do you choose one face that have two stickers already adjacent? maybe some none adjacent cases are faster.
2 - my algs have all possible cases so it contain two sticker adjacent too



ben1996123 said:


> or you could just use intuition


of course you can!! but every body know that one memorized alg is faster that think and make a new alg. sometime our mine cant take everything into consideration.


----------



## mark49152 (Oct 11, 2013)

Mohammadahmadi said:


> 1 - why do you choose one face that have two stickers already adjacent? maybe some none adjacent cases are faster.


Because it's easier to recognise. I wouldn't bother with a non-adjacent case unless there were no adjacent cases or all the ones available had only slow solutions.


----------



## Mohammadahmadi (Oct 11, 2013)

mark49152 said:


> Because it's easier to recognise. I wouldn't bother with a non-adjacent case unless there were no adjacent cases or all the ones available had only slow solutions.



but i think we should learn fast cases however they may be hard.
anyway this algs are provided with myself program so if you have any ideas to delete additional algs say me. i should write one " if " in my program so say me what should I write?


----------



## mark49152 (Oct 11, 2013)

Mohammadahmadi said:


> anyway this algs are provided with myself program so if you have any ideas to delete additional algs say me. i should write one " if " in my program so say me what should I write?


I'd like to see a list of optimal solutions where DBL and DFL are initially solved but I can search through your list and find those cases. What's the difference between 3v1 and 2v2?


----------



## Mohammadahmadi (Oct 11, 2013)

mark49152 said:


> What's the difference between 3v1 and 2v2?


2v2 mean 2 white on first layer and 2 on the second
3v1 mean 3 on first and 1 on second


mark49152 said:


> I'd like to see a list of optimal solutions where DBL and DFL are initially solved but I can search through your list and find those cases.


I'll provide that for you soon.


----------



## Mohammadahmadi (Oct 13, 2013)

mark49152 said:


> I'd like to see a list of optimal solutions where DBL and DFL are initially solved but I can search through your list and find those cases.


your algs are ready
please see here


----------



## mark49152 (Oct 13, 2013)

Mohammadahmadi said:


> your algs are ready
> please see here


That's great, thanks. I've already found some new tricks.

How do you determine the cases? I'm not sure I understand why the third set has only 6 cases. What about the case where the top sticker faces up, and the bottom sticker is on the side?


----------



## Mohammadahmadi (Oct 13, 2013)

mark49152 said:


> That's great, thanks. I've already found some new tricks.
> 
> How do you determine the cases? I'm not sure I understand why the third set has only 6 cases.



it's too easy. in all of them DBL and DFL are fix. so we have two another white.

one case is that both of them are in first layer. in this case you can make a 'case1' alg with do R2
one case is one in first layer and one in second. and we have all of them in 'case3'
one case is that both on second layer. and they are in 'case1' and 'case2'

in 'case1' we have two white side by side. each white may be in 3 sides so we have 3x3=9 cases.
in 'case2' we have two white face to face. each white may be in 3 sides but some cases can be repeat with doing U2! for example, FLU on top and BRU on right face = FLU on left and BRU on top. you can make them from each other with do a U2. so we don't have 9 cases! 3 of them are repeated so we have just 6 cases.
in 'case3' just like 'case2' we have 6 cases again. and they can make with R2



mark49152 said:


> What about the case where the top sticker faces up, and the bottom sticker is on the side?


do a R2 so we have third case in 'case3'

if you have any other questions, please feel free to ask me. tnx


----------

