a:6:{i:0;s:28733:"				<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
									<div class="h1"><h1>4 Nights 5 Days</h1></div>
					<p class="breadcrumb ar uu small"><a href="http://www.vnandamantourtravel.in/" title="Home">Home</a>
					
											<b class="ffv p2px">&rsaquo;</b><a href="http://www.vnandamantourtravel.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
											
					<b class="ffv p2px">&rsaquo;</b>4 Nights 5 Days</p> 
										<div class="fo dt w100"> 
					<div class="dtc vat ttw-detail pr20px pr">					
												<ul class="lsn gallery-slide" id="bxlider_ins">
																	<li>
										<div class="imgFrame m0a dib bdr">
										<div class="imgFrame picBg dtc ac vam lh0">	<a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_18/536349/291344.jpg">
										<div class="imgWidth" style="background-image: url(https://ttw.wlimg.com/package-images/photo-big/dir_18/536349/291344.jpg);background-size:cover;background-position:center;"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/536349/291344.jpg"  alt="4 Nights 5 Days" title="4 Nights 5 Days" class="imga"  />									</div></a>
										</div>
										</div>
										</li>
																	</ul>
												
					<script>
					var $j = jQuery.noConflict();
					var realSlider= $j("ul#bxlider_ins").bxSlider({
					      speed:500,
					      pager:false,
					      auto: true,
					      slideWidth: 450,
					      slideMargin: 0,
					      nextText:'',
					      prevText:'',
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					        changeRealThumb(realThumbSlider,newIndex);
					        
					      }
					      
					    });
					    
					    var realThumbSlider=$j("ul#bxslider-pager").bxSlider({
					      minSlides: 4,
					      maxSlides: 4,
					      slideWidth: 200,
					      slideMargin: 5,
					      moveSlides: 1,
					      pager:false,
					      speed:1000,
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      nextText:'<span></span>',
					      prevText:'<span></span>',
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					
					      }
					    });
					    
					    linkRealSliders(realSlider,realThumbSlider);
					    
					    if($j("#bxslider-pager li").length<5){
					      $j("#bxslider-pager .bx-next").hide();
					    }
					
					// sincronizza sliders realizzazioni
					function linkRealSliders(bigS,thumbS){
					  
					  $j("ul#bxslider-pager").on("click","a",function(event){
					    event.preventDefault();
					    var newIndex=$j(this).parent().attr("data-slideIndex");
					        bigS.goToSlide(newIndex);
					  });
					}
					
					//slider!=$thumbSlider. slider is the realslider
					function changeRealThumb(slider,newIndex){
					  
					  var $thumbS=$j("#bxslider-pager");
					  $thumbS.find('.active').removeClass("active");
					  $thumbS.find('li[data-slideIndex="'+newIndex+'"]').addClass("active");
					  
					  if(slider.getSlideCount()-newIndex>=4)slider.goToSlide(newIndex);
					  else slider.goToSlide(slider.getSlideCount()-4);
					
					}
					
					</script>
					</div>
			        <div class="dtc">
			        <p class="b xlarge mb10px">4 Nights 5 Days</p>
					
											<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Port Blair ,,Rose Island ,,Havelock Island ,,Nort Bay Island,,Baratang Island ,,</p>
												<div class="fo mt20px mb20px xxlarge">
						<p class="xxlarge b dif mb2px"><i class="fa fa-inr"></i> 29260						</p>
						<p class="xxsmall alpha50">Per Person</p>
						</div>
												<div class="mt12px mb7px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.vnandamantourtravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="4 Nights 5 Days - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px ts0 xxlarge dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="187082"/>
						</form>
						
												</div>
											<br/>
					</div>       
					</div>
											<div class="mt7px dif">* Mentioned prices may vary depending upon date of travel, hotel availability, surge pricing and seasonal rush.</div>
												<div class="mt30px mb30px">
						<div class="b xxlarge mb10px">
								   					Overview
		   											</div>					
						<p class="aj">Andaman Island houses some amazing beaches and islands along with the beautiful capital city to turn your dream vacation into a reality. Blessed with lush green forests and white sand beaches, it offers an ideal place to holiday with your family and friends and have a good time.<br />
At Tour My India, we offer 4 nights and 5 days Port Blair, Havelock withBaratang Island  tour that will cover most of the Andaman Excursion you would like to explore while holidaying in Andaman Island. Our tour includes a visit to some wonderful beaches of the island along with a Port Blair City Tour so that you can make the most of your vacation and take away many lifetime memories with us.<br />
This is a Perfect Tour for Those Coming for 5 Days to The Andaman Islands. You cover all the top 5 ISLAND in Andaman and good enough leisure time is also present. All attractions in Havelock and Baratang Island are covered in this tour program.</p>
						</div>
														<div class="mt30px b xlarge">
												   					Detailed Tour Itinerary
				   													</div>		   
								<br/>
																			<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 1											
											:</b> DAY 1:  ARRIVE TO PORT BLAIR										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												On arrive at Port Blair, our representative receive you at Airport /Harbor and escorted you to check in to the Hotel Resort. After check-in at the hotel and little relax, we start the journey with Anthropological Museum, which displays the tools, models habitats, art and handcrafts of the aboriginal tribes of Andaman & Nicobar Islands.<br />
Cellular Jail, and then proceed to Corbin’s Cove beach. At evening, the Light and Sound Show at Cellular Jail where The Saga of the Freedom Struggle Brought Alive.															
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 2											
											:</b> Day 02: Port Blair – Coral Island + Ross Island:-										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After Breakfast For a Full-Day Excursion To North Bay (Coral Island)– To See Coral Reefs, Varieties of Beautiful Ornamental Fishes and Other Marine Life. This is an Ideal Place for Snorkeling as This Sandy Beach Coupled with Clear Water Creates a Breath - Taking Spectacle. Optional Activities – Snorkeling, Scuba Diving, Glass Bottom Ride, after that proceed for Ross Island, The Former Residential And administrative island of the British during the rule of South East Asia, was nick named the Paris of the east. This Island is an Ideal Destination for Nature Walk amidst Sylvan Surrounding with Deer’s, Peacock Exotic Birds etc... .Night Stay at Port Blair			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 3											
											:</b> DAY 3:  Port Blair to Havelock  Island:-										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												DAY 3:  PORT BLAIR – HAVELOCK ISLAND :-<br />
Today, we start journey towards Havelock Island via luxury cruise from Port Blair. On arrival at Havelock Island, our representative will Receive and escort you to check-in to the resort. After lunch, we proceed to Radhanagar Beach, which rated the #7 among the finest beach In Asia. It is an ideal place for swimming, sea bathing and basking on the sun kissed beach. Evening Retun to Port Blair .....Night Stay At port Blair.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 4											
											:</b> DAY 4:  Port Blair to Baratang Island:-										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												DAY 4:  Port Blair to Baratang Island:-<br />
Baratang Day Trip Early Morning Proceed for Baratang Island. The Journey by Road. Then Proceed For limestone Cave and Return to Port Blair and Stay Overnight at Hotel			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 5											
											:</b> DAY 5: Hotel To Air Port Drop.										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												Drop to Airport. Fly back with ever lasting memories of these emerald Islands			
														   
											</div> 
											</div>
																			<script>
								jQuery(document).ready(function() {
									//jQuery('.product-detail').css('display','none');
								    jQuery(".sub-title").click(function() {
								        var $this = jQuery(this);
										  jQuery('.w-title').addClass('h15px',400);
								          $this.find('.w-title').removeClass('h15px',400);
										  jQuery('.product-detail').slideUp();
								          $this.next().slideDown();
								          if($this.find('i').hasClass('fa-angle-up')){
								          	$this.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
								          } else {
								          	$this.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
								          }
								        });
									});
								</script>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>CP (Room + Breakfast)</li>
																						<li>Hotel</li>
																						<li>Transport</li>
																						<li>Transfers</li>
																						<li>Airport Pickup-Drop</li>
																				<li>1. Accommodation in AC Rooms as given at Hotels in Port Blair with Breakfast and all taxes.</li><li>
2. All Entry Tickets & ferry Tickets and Permit Charges.</li><li>
3. All sightseeing By 01 Personal A/c Vehicles. </li><li>
4.  Full day Tour with all Transfers including Airport Pickup and Drop.</li><li>
5. Havelock Transfers in Luxury cruise. OR Green ocen.</li><li>
6. 01 Dabble A/c Rooms. </li><li>
7.  Meet and Greet Service at the Airport.</li><li>
8. Personal Tour Coordinator to help you with any requirements during the Tour.</li><li>
9. Travel assistance by field executive at all the major entry exit points (Airport / Jetty /Jail / Water Sports Complex, etc).</li>
																	</ul>
								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Exclusions</p>
								</div>
								
								<ul><li>1. Flight Tickets are not included. We recommend you to book Flight ticket by yourself as it will be cost. </li><li>
Effective and based upon your flexibility. However, if you want us to book the tickets then we can do it.  For you based upon availability.</li><li>
2. Other meals not mentioned laundry, telephone calls, and incidentals</li><li>
3. Any Personal expenses .room Service & Special Orders. Alcohol and non-alcoholic Beverage. </li><li>
4. Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary.</li><li>
4. Any extra excursion or sights caning apart From the suggested tour itinerary.</li><li>
5. Camera Tickets are not including in the mentioned cost of sightseeing & Transfers.</li><li>
6. Other meals not mentioned, laundry, telephone calls.</li><li>
7. Any cost arising due to natural calamities like, road blockage, political disturbances (strikes), etc (to be     .   Borne by the client, who is directly payable on the spot).</li><li>
8. Mandatory Meal Supplement on 24th/25th December and 31st December is not included. This Amount.   .   Should be paid directly at the hotel after arrival.</li></ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* 20% Advance Percentage of total booking amount</li><li>
* Airfare/Transport fare to be paid full at one time in advance.</li><li>
Payments:For all the services contracted, certain advance payment should be made to hold the booking, on confirmed basis & the balance amount can be paid either before your departure from your country or upon arrival in INDIA but definitely before the commencement of the services. Management personnel’s hold the right to decide upon the amount to be paid as advance payment, based on the nature of the service & the time left for the commencement of the service.</li><li>
Apart from above in some cases like Special Train Journeys, hotels or resorts bookings during the peak season (X-Mas, New Year), full payment is required to be sent in advance</li></ul>						
								</div>
									
								<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Terms &amp; Conditions</p>
								</div>				
								Our Liabilities & Limitations:
 Please note that after the finalization of the Tour/ service Cost, if there are any Hike in entrance fees of monuments / museums, Taxes, fuel cost or guide charges – by Govt of India, the same would be charged as extra.
We are  act only in the capacity of agent for the hotels, airlines, transporters, railways & contractors providing other services & all exchange orders, receipts, contracts & tickets issued by us are issued subject to terms & conditions under which these services are provided by them.
All itineraries are sample itineraries, intended to give you a general idea of the likely trip schedule. Numerous factors such as weather, road conditions, the physical ability of the participants etc. may dictate itinerary changes either before the tour or while on the trail. We reserve the right to change any schedule in the interest of the trip participants' safety, comfort & general wellbeing.
Our rates are based on the prevailing rates as negotiated by us with the hotels, airlines etc. Hotels and Airlines retain the right to modify the rates without notice. In case of such changes the rates quoted before the modification, can be changed by us according to the modifications by hotels or airlines. All hotel bookings are based on usual check in and check out time of the hotels until unless indicated in the itinerary.
We shall not be responsible for any delays & alterations in the programmer or expenses incurred – directly or indirectly – due to natural hazards, flight cancellations, accident, breakdown of machinery or equipment’s, breakdown of transport, weather, sickness, landslides, political closures or any untoward incidents.
We shall not be responsible for any loss, injury or damage to person, property, or otherwise in connection with any accommodation, transportation or other services, resulting – directly or indirectly – from any act of GOD, dangers, fire, accident, breakdown in machinery or equipment, breakdown of transport, wars, civil disturbances, strikes, riots, thefts, pilferages, epidemics, medical or custom department regulations, defaults, or any other causes beyond our control.
We do not have any insurance policy covering the expenses for accident, sickness, loss due to theft, or any other reasons. Visitors are advised to seek such insurance arrangements in their home country. All baggage’s & personal property/s at all times are at the client's risk.
Please Note: We will not be responsible for any costs arising out of unforeseen circumstances like landslides, road blocks, bad weather, etc.								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
						
						<ul><li>* Upon cancellation, refund will be made after deducting the Retention Amount.</li><li>
* Retention Amount varies as per the number of days left before your package start date.</li><li>
Cancellation Policy: In the event of cancellation of tour / travel services due to any avoidable / unavoidable reason/s we must be notified of the same in writing. Cancellation charges will be effective from the date we receive advice in writing, and cancellation charges would be as follows:</li><li>
45 days prior to arrival: 10% of the Tour / service cost.</li><li>
15 days prior to arrival: 25% of the Tour / service cost.</li><li>
07 days prior to arrival: 50% of the Tour / service cost.</li><li>
48 hours prior to arrival OR No Show: No Refund.</li><li>
Note: Written cancellation will accept on all working days, except Sunday, Any cancellation sent on Sunday's will be considered on next working day (Monday).</li><li>
For the X-mas and New Year period from 20 Dec to 05 Jan the payment is non-refundable.</li><li>
In case you cancel the trip after commencement, refund would be restricted to a limited amount only which too would depend on the amount that we would be able to recover from the hoteliers/ contractors we patronize. For unused hotel accommodation, chartered transportation & missed meals etc. we do not bear any responsibility to refund.</li><li>
Please Note: We will not be responsible for any costs arising out of unforeseen circumstances like landslides, road blocks, bad weather, etc.</li><li>
* Refund will be made within 15 working days from the date of receipt of the cancellation.</li></ul>						
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.vnandamantourtravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="4 Nights 5 Days - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="187082"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-havelock.htm" title="Packages in Havelock">Havelock</a> <b class="alpha50 bn small">(22)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-port-blair.htm" title="Packages in Port Blair">Port Blair</a> <b class="alpha50 bn small">(19)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-genting.htm" title="Packages in Genting">Genting</a> <b class="alpha50 bn small">(15)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-moga.htm" title="Packages in Moga">Moga</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-kolhapur.htm" title="Packages in Kolhapur">Kolhapur</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-mansa.htm" title="Packages in Mansa">Mansa</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-cuddapah.htm" title="Packages in Cuddapah">Cuddapah</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-adilabad.htm" title="Packages in Adilabad">Adilabad</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-anantapur.htm" title="Packages in Anantapur">Anantapur</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/packages-in-south-andaman.htm" title="Packages in South Andaman">South Andaman</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/beach-islands-holidays-catid.htm" title="Beach and Islands Packages">Beach and Islands</a> <b class="alpha50 bn small">(28)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/forts-palaces-holidays-catid.htm" title="Forts and Palaces Packages">Forts and Palaces</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/group-holidays-catid.htm" title="Group Packages">Group</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/water-sports-activity-holidays-catid.htm" title="Water Sports and Activity Packages">Water Sports and Activity</a> <b class="alpha50 bn small">(13)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/boat-safari-holidays-catid.htm" title="Boat Safari Packages">Boat Safari</a> <b class="alpha50 bn small">(9)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/paddle-boats-holidays-catid.htm" title="Paddle Boats Packages">Paddle Boats</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/trekking-holidays-catid.htm" title="Trekking Packages">Trekking</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/water-skiing-holidays-catid.htm" title="Water Skiing Packages">Water Skiing</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/snorkeling-holidays-catid.htm" title="Snorkeling Packages">Snorkeling</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.vnandamantourtravel.in/scuba-diving-holidays-catid.htm" title="Scuba Diving Packages">Scuba Diving</a> <b class="alpha50 bn small">(10)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/parasailing-holidays-catid.htm" title="Parasailing Packages">Parasailing</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/heritage-holidays-catid.htm" title="Heritage Packages">Heritage</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/adventure-holidays-catid.htm" title="Adventure Packages">Adventure</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/honeymoon-holidays-catid.htm" title="Honeymoon Packages">Honeymoon</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/kayaks-holidays-catid.htm" title="Kayaks Packages">Kayaks</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/water-scooters-holidays-catid.htm" title="Water Scooters Packages">Water Scooters</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/family-holidays-catid.htm" title="Family Packages">Family</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/jet-ski-ride-holidays-catid.htm" title="Jet Ski Ride Packages">Jet Ski Ride</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.vnandamantourtravel.in/snorkelling-holidays-catid.htm" title="Snorkelling Packages">Snorkelling</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
								
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:54:"Book 4 Nights 5 Days - 4 Nights / 5 Days Tour Packages";i:2;s:175:"book 4 nights 5 days - 4 nights / 5 days tour packages, adventure tour packages, port blair ,,rose island ,,havelock island ,,nort bay island,,baratang island ,, tour packages";i:3;s:232:"Book 4 Nights 5 Days - 4 Nights / 5 Days tour packages from Vn Andaman Tour & Travels - Get attractive 4 Nights / 5 Days Adventure  tour packages for  Port Blair ,,Rose Island ,,Havelock Island ,,Nort Bay Island,,Baratang Island ,,.";i:4;s:1388:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair ,,Rose Island ,,Havelock Island ,,Nort Bay Island,,Baratang Island ,,"        
		                 },
		      "description": "Andaman Island houses some amazing beaches and islands along with the beautiful capital city to turn your dream vacation into a reality. Blessed with lush green forests and white sand beaches, it offers an ideal place to holiday with your family and friends and have a good time.
At Tour My India, we offer 4 nights and 5 days Port Blair, Havelock withBaratang Island  tour that will cover most of the Andaman Excursion you would like to explore while holidaying in Andaman Island. Our tour includes a visit to some wonderful beaches of the island along with a Port Blair City Tour so that you can make the most of your vacation and take away many lifetime memories with us.
This is a Perfect Tour for Those Coming for 5 Days to The Andaman Islands. You cover all the top 5 ISLAND in Andaman and good enough leisure time is also present. All attractions in Havelock and Baratang Island are covered in this tour program.",
		      "name": "4 Nights 5 Days",
		      "telephone": "+91-8008089220"
		    }
		    </script>
			";i:5;N;}