Darts meets Codegolf I think everyone is familiar with darts, some people dont understand the scores so for those people here is a usefull link on that.

The board

A dartboard can be compared to a pie cut in 20 pieces.
Each piece is divided in 4 sections.  


a small outer ring called double (points x2)  
a big ring called single (points x1)
another small ring called triple (points x3)
another big ring called single (points x1)


In the middle of the board are 2 more rings, a green and red one (classic board)


Red ring, center of the board called bullseye or double bull and is good for 50 points. This one counts as a double  and because of that its allowed to checkout with it.
Green ring, called bull, single bull or simply 25 and counts as a single.


Challenge

Find all checkout possibilties with 3 darts or less.
The user can enter an integer and you will have to check if its possible to get the score to 0 with 3 darts (or fewer).

Examples

example 1:

Input: 170  
Output: T20, T20, Bullseye


Example 2:  

Input: 6  
Output: D3;  
        S3,S1,D1;  
        S2,D2;  
        S2,S2,D1;  
        D2,D1;  
        S4,D1;  
        D1,D1,D1;  
        S1,S1,D2;  
        T1,S1,D1;


Example 3:

Input: 169
Output: No possible checkout!


Rules


Basic dart rule, you must end with a double (outer ring of the board or bullseye) 
No use of external resources.
Hard coding of possible checkouts is allowed but remember this is codegolf, it wont get your code short ;)  
Cells to hit will be displayed in format C+N where C = T for Triple, D for double and S for single.

bullseye can be called bullseye or DB, DBull or something simular.



Possible checkouts

To get you started, The highest possible checkout is 170.
169,168,166,165,163,162,159 are not possible in 3 darts.
The lowest possible checkout is 2.

In addition

This isnt a requirement, add in a possibility to show all possible checkouts for all scores.  Basicly because I wonder how many combinations are possible :P

Winner will be the one with the shortest code.

Happy coding.
MATLAB (299 249 241 chars)

This is my first serious golfing. My first attempt (136 chars) gives the correct result, but not with the correct formatting. It gives all possibilities looking at the number of points for each dart. This means that single 20 and double 10 do have a separate entry, however, they are both displayed as 20. Of course the last dart is always a double. 

function f(x);u=[1:20 25].';y=[u;2*u; 3*u(1:end-1)];v=combvec([combnk(y,2);[y y];[zeros(62,1) y];[0 0]].',y(22:42).').';v(sum(v,2)==x,:)


In the second attempt the formatting is improved, which has of course increased the number of characters:

function f(x);h=.1;u=h+[1:20,25].';y=[u;2*u;3*u(1:20)];v=combvec([combnk(y,2);[y,y];h*ones(62,1),y];[h,h]].',y(22:42).').';t='SDT';r=@fix;strrep(arrayfun(@(x)[t(int8((x-r(x))/h)),num2str(h*r(x)/(x-r(x)))],v(sum(r(v),2)==x,:),'un',0),'S0','')


Improved from 299 to 249 characters, while at the same time even improving the output formatting. For this improved version the output for the example cases is:

f(170):

'T20'    'T20'    'D25'


f(6):

'S1'    'S3'    'D1'
'S1'    'T1'    'D1'
'S2'    'D1'    'D1'
'S2'    'S2'    'D1'
'D1'    'D1'    'D1'
''      'S4'    'D1'
''      'D2'    'D1'
'S1'    'S1'    'D2'
''      'S2'    'D2'
''      'D1'    'D2'
''      ''      'D3'


f(169):

Empty cell array: 0-by-3


Additional:

According to my calculation skills there are a grand total of 42336 possibilities to end the dart game.