title: How to process first n items and remaining one differently in a observable stream
body: <p>for example, </p>
  
  <p>given a stream of a certain number (m) of numbers (m1, m2, m3, m4, m5, m6...),  and apply a transformation (2 * i) to first n items (n can be less, equal or larger than m),  apply another transformation (3 * i) to the remaining items.  and </p>
  
  <p>return result : m1*2, m2*2, m3*3, m4*3, m5*3, m6*3... (assuming n=2 here).</p>
  
  <p>I was trying to use take(n) and skip(n) and then concatwith, but looks like take(n) will drop the remaining items in the sequence , and make skip(n) after that return nothing.</p>